Pasar por Referencia

Se puede pasar una variable por referencia a una función y así hacer que la función pueda modificar la variable. La sintaxis es la siguiente:

<?php
function foo(&$var)
{
$var++;
}

$a=5;
foo($a);
// $a es 6 aquí
?>

Nota: No existe ningún signo de referencia en una llamada a una función - sólo en la definición de la función. Las definiciones de funciones por sí solas son suficientes para pasar correctamente el argumento por referencia. A partir de PHP 5.3.0, se obtendrá una advertencia diciendo que "call-time pass-by-reference" (pasar por referencia en tiempo de llamada) está obsoleto cuando se use & en foo(&$a);. A partir de PHP 5.4.0, el paso por referencia en tiempo de llamada ha sido eliminado, por lo que su uso emitirá un error fatal.

Se puede pasar por referencia lo siguiente:

  • Variables, esto es, foo($a)
  • Referencias devueltas desde funciones, esto es:

    <?php
    function foo(&$var)
    {
    $var++;
    }
    function &
    bar()
    {
    $a = 5;
    return
    $a;
    }
    foo(bar());
    ?>
    Vea más sobre devolver por referencia.

Ninguna otra expresión debería pasarse por referencia, ya que el resultado no está definido. Por ejemplo, los siguientes ejemplos de pasar por referencia no son válidos:

<?php
function foo(&$var)
{
$var++;
}
function
bar() // Observe que falta el &
{
$a = 5;
return
$a;
}
foo(bar()); // Produce un error fatal a partir de PHP 5.0.5,un aviso de estándar estricto
To Top