Referințe în PHP

În PHP poți atribui valoarea unei variabile către alta:

php<?php
  $num1 = 1;
  $num2 = $num1; // atribuim
  
  echo $num1; // 1
  echo $num2; // 1
?>

La o astfel de atribuire, în noua variabilă se scrie o copie a valorii primei variabile. Aceasta înseamnă că variabilele nu sunt legate în niciun fel una de cealaltă și pot fi modificate independent. Uitați-vă la exemplul de cod:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nu s-a schimbat
?>

Se poate, totuși, face astfel încât să se copieze nu valoarea variabilei, ci o referință către ea. În acest caz, la modificarea valorii unei variabile, se va modifica și valoarea celeilalte.

Pentru a transmite valoarea prin referință, trebuie să puneți în fața numelui variabilei un ampersand:

php<?php
  $num1 = 1;
  $num2 = &$num1; // transmitem prin referință
?>

Acum modificarea primei variabile va duce și la modificarea celei de-a doua:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - s-a schimbat
?>

Similar, dacă schimbăm prima variabilă, se va schimba și a doua:

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

Spuneți, care va fi rezultatul executării codului:

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

Spuneți, care va fi rezultatul executării codului:

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

Spuneți, care va fi rezultatul executării codului:

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

Spuneți, care va fi rezultatul executării codului:

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