Argument unpacking met een associative array
Als programmeur kom je vaker dingen tegen die je een beetje verbazen. Door zulke "huh"-momentjes realiseer ik mij weer hoe complex de wereld om mij heen eigenlijk is. In dit geval was ik wat aan het spelen met een SAST toen ie klaagde over een probleem, en ik eerst dacht dat de tool zich gewoon vergiste. De code in kwestie zag er ongeveer zo uit:
<?php
function f(int ...$ints) {
var_dump($ints);
}
f(...['one' => 1, 'two' => 2]);
Ik dacht, naief als ik was, dat het resultaat van deze code een list zou zijn met de waardes 1 en 2. Mijn SAST-tool gaf echter aan dat ik een associative array meegaf. Dat vond ik raar, want een variadic parameter doet niets met de keys van een array. Maar het resultaat is toch echt:
<?php
array(2) {
["one"]=>
int(1)
["two"]=>
int(2)
}
Hmm. Nu is er iets voor te zeggen als je met named arguments zou werken, maar in dit geval blijf ik het raar vinden. Nouja, dan maar een array_values() er om heen zetten...
