Argumentos da função também podem ser passados por referência, prefixando com o operador de referência &. Isto permite sua função visualizar e alterar variáveis externas:

<?
function contarTodos(&$count)
{
if (func_num_args() == 0) {
die(“Você precisa especificar pelo menos um argumento.”);
} else {
$args = func_get_args(); // Retorna um array de argumentos
array_shift($args); // Remove o argumento definido no inicio.
$count = strlen ($arg1);
foreach ($args as $arg) {
$count += strlen($arg);
}
}
}
$count = 0;
contarTodos($count, “um”, “dois”, “três”);
echo $count; // será impresso 10
?>

Observação:
Isso é muito importante para você ficar sabendo, que as funções só aceitam variáveis para serem passadas por referência, você não pode passar uma expressão.

Ao contrário do PHP 4, PHP 5 permite que o valor padrão possa ser especificado, mesmo para os parâmetros quando forem declarados por referência:

function cmdExiste($cmd, &$saida = null) {
$saida = ‘onde $cmd’;
if (strpos($saida, DIRECTORY_SEPARATOR) !== false) {
return true;
} else {
return false;
}
}

No exemplo acima, o parâmetro $saída é totalmente opcional, se uma variável não for passada, uma nova será criada no âmbito do cmdExiste() e destruída quando a função retornar.