Referências em foreach em PHP
Ao trabalhar com o loop foreach
alterar a variável dos elementos
não resulta em alterações no próprio array:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // não mudará
?>
No entanto, o efeito desejado pode ser alcançado se declararmos a variável dos elementos como uma referência. Neste caso, alterações nessa variável levarão a alterações no array:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // mudará
?>
Corrija o seguinte código para que funcione conforme planejado:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Corrija o seguinte código para que funcione conforme planejado:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>