Referências em PHP
Em PHP, você pode atribuir o valor de uma variável a outra:
<?php
$num1 = 1;
$num2 = $num1; // atribuímos
echo $num1; // 1
echo $num2; // 1
?>
Com essa atribuição, uma cópia do valor da primeira variável é gravada na nova variável. Isso significa que as variáveis não estão vinculadas de forma alguma e podem ser modificadas de forma independente. Veja no exemplo de código:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - não mudou
?>
No entanto, é possível fazer com que não seja o valor da variável que seja copiado, mas sim uma referência a ele. Nesse caso, ao alterar o valor de uma variável, o valor da outra também será alterado.
Para passar o valor por referência, é necessário colocar um e comercial antes do nome da variável:
<?php
$num1 = 1;
$num2 = &$num1; // passamos por referência
?>
Agora, alterar a primeira variável também alterará a segunda:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - mudou
?>
Da mesma forma, se alterarmos a primeira variável, a segunda também mudará:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Conte qual será o resultado da execução do código:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Conte qual será o resultado da execução do código:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Conte qual será o resultado da execução do código:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Conte qual será o resultado da execução do código:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>