Referencias en foreach en PHP
Al trabajar con el bucle foreach
modificar la variable de los elementos
no produce cambios en el array original:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // no cambiará
?>
Sin embargo, se puede lograr el efecto deseado si declaramos la variable para los elementos como referencia. En este caso, los cambios en esta variable conducirán a modificaciones en el array:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // cambiará
?>
Corrija el siguiente código para que funcione según lo planeado:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Corrija el siguiente código para que funcione según lo planeado:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>