Portál AbcLinuxu, 26. dubna 2024 16:44


Dotaz: PHP - Objasnění rozdílu v kódu

12.11.2013 11:52 MMM
PHP - Objasnění rozdílu v kódu
Přečteno: 361×
Odpovědět | Admin
Ahoj, objasní mi tohle někdo? pořád nechápu rozdíl :( Díky
foreach ($arr1 as $key => &$val) {}
foreach ($arr2 as $key => $val) {}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 12.11.2013 12:02 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Objasnění rozdílu v kódu
Odpovědět | | Sbalit | Link | Blokovat | Admin
foreach ($arr1 as $key => &$val) { $val = 'tohle se uloží to $arr1[$key]'; }
foreach ($arr2 as $key => $val) { $val = 'tohle na počátku další iterace zmizí'; }
Je to stejné jako při předávání parametru funkci.
Hello world ! Segmentation fault (core dumped)
12.11.2013 12:45 logik
Rozbalit Rozbalit vše Re: PHP - Objasnění rozdílu v kódu
Ještě je tam jeden "pitfall", když použiješ

foreach ($arr1 as $key => &$val) { $val = 'tohle se uloží to $arr1[$key]'; }

tak i po konci cyklu je $val definovaná jako odkaz do $arr1[*last*], takže když ji přiřadíš hodnotu, tak si to zmršíš. Takže je "good practice" po tom cyklu udělat unset($val) (tím zrušíš tu vazbu, ne že smažeš ten prvek pole :-))

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.