Referenties in foreach in PHP
Bij het werken met een foreach lus
leidt het wijzigen van de variabele voor elementen
niet tot wijzigingen in de array zelf:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // verandert niet
?>
Het gewenste effect kan echter worden bereikt door de variabele voor elementen als een referentie te declareren. In dit geval zullen wijzigingen aan deze variabele leiden tot wijzigingen in de array:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // verandert
?>
Corrigeer de volgende code zodat hij werkt zoals bedoeld:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Corrigeer de volgende code zodat hij werkt zoals bedoeld:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>