Modificar valores de un array en un bucle foreach
Algo sumamente sencillo, que puede hacerse a partir de PHP 5, es modificar los valores de un array pasándolos como referencia. De esta forma se evitan grandes bloques de código y se agiliza el rendimiento.
$nombres = array('JUAN', 'José', 'ANA', 'Margarita', 'Lautaro', 'Emilia');
foreach($nombres as &$nombre) {
$nombre = strtolower($nombre);
}
print_r($nombres);
/* Salida:
Array
(
[0] => juan
[1] => josé
[2] => ana
[3] => margarita
[4] => lautaro
[5] => emilia
)
*/
Modificar variables globales evitando el uso de global y $GLOBALS
Utilizar el paso de variables por referencia nos ayuda también a modificar variables globales, evitando tener que declararlas como globales (global) dentro de un método o función, o recorriendo el array $GLOBALS.
Esta «técnica» puede utilizarse tanto en funciones como en métodos de clase, ¿cómo? Veamos los siguientes ejemplos:
$variable_global = 'Contenido de mi variable global';
function modificar_variable_global(&$variable) {
$variable = 'Variable global modificada';
}
modificar_variable_global($variable_global);
print $variable_global; // salida: Variable global modificada
Tambien podemos usarlo como método de una clase:
$variable_global = 'Contenido de mi variable global';
class MiClase {
//...
function modificar_variable_global(&$variable) {
$variable = 'Variable global modificada desde un método de clase';
}
//...
}
$obj = new MiClase();
$obj->modificar_variable_global($variable_global);
print $variable_global;
// salida: Variable global modificada desde un método de clase