Hivatkozások a PHP-ban
A PHP-ban egy változó értékét hozzárendelhetjük egy másikhoz:
<?php
$num1 = 1;
$num2 = $num1; // hozzárendeljük
echo $num1; // 1
echo $num2; // 1
?>
Egy ilyen hozzárendelésnél az első változó értékének egy másolata kerül a új változóba. Ez azt jelenti, hogy a változók semmilyen módon nincsenek összekötve egymással, és függetlenül módosíthatók. Nézd meg a példakódot:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - nem változott
?>
Megtehetjük azonban, hogy ne a változó értékét másoljuk, hanem egy hivatkozást arra. Ebben az esetben, ha az egyik változó értéke megváltozik, a másik értéke is megváltozik.
Ahhoz, hogy érték szerinti átadás helyett hivatkozással adjuk át az értéket, a változó neve elé egy és-jelet (&) kell tenni:
<?php
$num1 = 1;
$num2 = &$num1; // hivatkozással adjuk át
?>
Most az első változó megváltoztatása a második megváltozásához is vezet:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - megváltozott
?>
Hasonlóképpen, ha megváltoztatjuk az első változót, a második is megváltozik:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Mondd el, mi lesz a kód végrehajtásának eredménye:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Mondd el, mi lesz a kód végrehajtásának eredménye:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Mondd el, mi lesz a kód végrehajtásának eredménye:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Mondd el, mi lesz a kód végrehajtásának eredménye:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>