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