Referências em PHP

Em PHP, você pode atribuir o valor de uma variável a outra:

php<?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<?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<?php
  $num1 = 1;
  $num2 = &$num1; // passamos por referência
?>

Agora, alterar a primeira variável também alterará a segunda:

php<?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<?php
  $num1 = 1;
  $num2 = &$num1;
  $num1 = 2;
  
  echo $num2; // 2
?>
Задание 1

Conte qual será o resultado da execução do código:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1;
  echo $num2;
?>
Задание 2

Conte qual será o resultado da execução do código:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 3

Conte qual será o resultado da execução do código:

php<?php
  $num1 = 1;
  $num2 = $num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 4

Conte qual será o resultado da execução do código:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>