Floris Luiten

Close-up van een blonde jongeman met bril die en kop koffie drinkt in een cafe

Floris Luiten is programmeur bij u0192. Hij houdt van programmeren, cijfers, logica en het bestuderen van het menselijk gedrag. Op deze website laat hij zich over deze en nog meer onderwerpen uit. Wil je weten wat Floris nu denkt? Volg hem via Twitter (@florisl).
Meer informatie over Floris Luiten

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...

Bekijk andere blog posts