Referencja w pętli foreach – bug który nie jest bugiem
1 lutego 2010
2 komentarze(y)
Weźmy pod lupę prostą pętle foreach w PHP, która zamienia we wszystkich elementach tablicy litery na duże:
$words = array('system', 'baza', 'telefon');
foreach ($words as &$item)
{
$item = strtoupper($item);
}
Jak widać, kolejne elementy tablicy pobierane są po przez referencję, tj. tworzony jest wskaźnik na konkretny element a nie jego kopia w pamięci. Dlatego też, zmieniając w pętli zawartość zmiennej $item modyfikujemy pierwotną tablicę. W czym zatem tkwi problem?