Referenser i foreach i PHP
När man arbetar med en foreach-loop
leder ändring av variabeln för elementen
inte till ändringar i själva arrayen:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // ändras inte
?>
Den önskade effekten kan dock uppnås om man deklarerar variabeln för elementen som en referens. I detta fall kommer ändringar av denna variabel att leda till ändringar i arrayen:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // ändras
?>
Korrigera följande kod så att den fungerar enligt avsikten:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Korrigera följande kod så att den fungerar enligt avsikten:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>