Referencje w foreach w PHP
Podczas pracy z pętlą foreach
modyfikacja zmiennej dla elementów
nie prowadzi do zmian w samej tablicy:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // nie zmieni się
?>
Jednak pożądanego efektu można osiągnąć, jeśli zadeklarujemy zmienną dla elementów jako referencję. W tym przypadku zmiany tej zmiennej będą prowadzić do zmian w tablicy:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // zmieni się
?>
Popraw poniższy kod tak, aby działał zgodnie z założeniami:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Popraw poniższy kod tak, aby działał zgodnie z założeniami:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>