Referencje w PHP
W PHP można przypisać wartość jednej zmiennej do drugiej:
<?php
$num1 = 1;
$num2 = $num1; // przypisujemy
echo $num1; // 1
echo $num2; // 1
?>
Przy takim przypisaniu do nowej zmiennej zapisywana jest kopia wartości pierwszej zmiennej. Oznacza to, że zmienne nie są w żaden sposób powiązane ze sobą i można je niezależnie modyfikować. Spójrz na przykładzie kodu:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - nie zmieniło się
?>
Można jednak sprawić, aby kopiowana nie była wartość zmiennej, lecz referencja do niej. W tym przypadku przy zmianie wartości jednej zmiennej, będzie zmieniać się również wartość drugiej.
Aby przekazać wartość przez referencję, należy przed nazwą zmiennej postawić ampersand:
<?php
$num1 = 1;
$num2 = &$num1; // przekazujemy przez referencję
?>
Teraz zmiana pierwszej zmiennej doprowadzi również do zmiany drugiej:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - zmieniło się
?>
Podobnie, jeśli zmienimy pierwszą zmienną, to zmieni się również druga:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Opowiedz, jaki będzie wynik wykonania kodu:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Opowiedz, jaki będzie wynik wykonania kodu:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Opowiedz, jaki będzie wynik wykonania kodu:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Opowiedz, jaki będzie wynik wykonania kodu:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>