-
Por padrão, argumentos de função são passados por valor (de forma que se você mudar o valor do parâmetro dentro da função, ele não é alterado fora da função). Para permitir que uma função modifique os seus argumentos, eles devem ser passados por referência.
Para ter um argumento para uma função sempre passado por referência, adicione antes dele um "e comercial" (&) ao nome do argumento na definição da função.
http://php.net/manual/pt_BR/functions.arguments.php
-
O & antes do parâmetro da função calc faz com que o valor da variável passada como argumento para esta função possa ser alterado. Isso é chamado Passagem por Referência, e não deve ser confundido com Passagem por Valor, onde apenas o valor do argumento é passado. A Passagem por Referẽncia pode causar efeitos colaterais (side effects) se mal utilizada.
Caso haja mais dúvidas:
http://php.net/manual/pt_BR/language.references.return.php
http://www.criarweb.com/artigos/86.php
Mais sobre parâmetros e argumentos:
https://pt.stackoverflow.com/questions/32448/qual-a-diferen%C3%A7a-entre-par%C3%A2metro-e-argumento
-
&=1 ai fazendo o total 10+1=11
-
O valor passado a função calc foi por referência conforme o & na frente do parametro. Sendo assim, foi passado o valor 5 e a função calc incrementou um, ficando 6. o $a+=5 é equivalente $a=$a + 5, como o $a no momento é 6, assim somando a 5 fica 11.
-
LETRA C
para quem queira ver o código:
<?php
function calc(&$var) {
$var++;
}
$a=5;
calc($a);
$a+=5;
echo $a;
?>