Referencer i foreach i PHP
Når man arbejder med løkken foreach
leder ændring af variablen for elementer
ikke til ændringer i selve arrayet:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // ændres ikke
?>
Den ønskede effekt kan dog opnås, hvis man erklærer variablen for elementer som en reference. I dette tilfælde vil ændringer af denne variabel føre til ændringer i arrayet:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // ændres
?>
Ret følgende kode sådan, at den virker som tilsigtet:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Ret følgende kode sådan, at den virker som tilsigtet:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>