array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'language.references.pass.php', 1 => 'Passagem por referência', ), 'up' => array ( 0 => 'language.references.php', 1 => 'Referências', ), 'prev' => array ( 0 => 'language.references.arent.php', 1 => 'O que referências não são', ), 'next' => array ( 0 => 'language.references.return.php', 1 => 'Retornando referências', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'language/references.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
Você pode passar uma variável por referência a uma função de forma que a função possa modificar a variável. A sintaxe é a seguinte:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a é 6 aqui
?>
Nota: Não há o sinal de referência na chamada da função - apenas nas definições de função. As definições de função, sozinhas, são suficientes para passar o argumento por referência.
Os itens seguintes podem ser passados por referência:
foo($a)
Referências retornadas de funções, como:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Nenhuma outra expressão pode ser passada por referência pois não tem comportamento definido. Os seguintes exemplos de passagem por referência são inválidos:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Repare que falta &
{
$a = 5;
return $a;
}
foo(bar()); // Gera um alerta
foo($a = 5); // Expressão, não uma variável
foo(5); // Gera um erro fatal
class Foobar
{
}
foo(new Foobar()) // Produz um aviso no PHP 7.0.7
// Somente variáveis devem ser passadas por referência
?>