Referencias a variables y arrays en PHP

Posted: Mayo 27th, 2010 | Author: | Filed under: PHP | 3 Comments »

PHP sigue muchas de la reglas de C, por lo que no podía faltar la referencia. Veamos un ejemplo ilustrativo, tenemos un array de elementos y queremos recorrerlo realizando modificaciones a medida que lo hacemos. La función preferida para esto es foreach, pero al hacerlo trabajamos sobre una copia de la variable, por lo que al salir del bucle nuestros cambios desaparecen.

Un primer intento podria ser este:

if (!empty($data[‘noticias’])) { foreach ($data[‘noticias’] as $each) {

$each[‘fechaactual’] = date(“Y-m-d h:i:s”);

} }

Para solucionar esto usamos una referencia:

if (!empty($data[‘noticias’])) { foreach ($data[‘noticias’] as $k=>$v) {

/* Creamos la referencia en la posición actual */
$pointer =& $data[‘noticias’][$k];

/* Hacemos cambios en el arreglo original */
$pointer[‘fechaactual’] = date(“Y-m-d h:i:s”);

} }


3 Comments on “Referencias a variables y arrays en PHP”

  1. 1 Diego said at 5:59 pm on Junio 7th, 2010:

    Tengo entendido que PHP no tiene punteros. O sea, una referencia no es un puntero.

  2. 2 admin said at 7:20 am on Junio 30th, 2010:

    Tienes toda la razon, un puntero a variable deberia contener la direccion de memoria de la variable. Corregido a referencia, gracias por el comentario 🙂

  3. 3 zinfinal said at 8:25 am on Junio 4th, 2012:

    if (!empty($data[‘noticias’])) {
    foreach ($data[‘noticias’] as $k=>$v) {

    /* Hacemos cambios en el arreglo original */
    $data[‘noticias’][$k][‘fechaactual’] = date(“Y-m-d h:i:s”);

    }
    }