Referințe în PHP
În PHP poți atribui valoarea unei variabile către alta:
<?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
$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
$num1 = 1;
$num2 = &$num1; // transmitem prin referință
?>
Acum modificarea primei variabile va duce și la modificarea celei de-a doua:
<?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
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Spuneți, care va fi rezultatul executării codului:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Spuneți, care va fi rezultatul executării codului:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Spuneți, care va fi rezultatul executării codului:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Spuneți, care va fi rezultatul executării codului:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>