2017. szeptember 27., szerda

Szemöldökráncolás és PHP II.

Függvényhívás tömb paraméterrel

Kódrészlet

function addElement($list)
{
    $list[] = 4;
}

$myList = [1, 2, 3];

addElement($myList);

var_dump($myList);

Eredmény

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

Ismét csak a python-os, C#-os, Java-ás stb. beidedződés alapján azt várnám, hogy a $myList tömb négy elemű lesz, amelynek negyedik eleme 4. Value type VS Reference type. A PHP a tömböknél nem a referenciát adja át, hanem másol, gyakorlatilag érték típusként viselkedik. A megoldás & operátor alkalmazása a pareméterek definiálásánál... Az csak történelmi érdekesség, hogy PHP4-es esetében az objektumoknál is alkalmazni kellett az & operátort, például assignment esetén is. Szerencsére azóta már az objektumok Reference type-ok a PHP varázslatos világában is...