Viited PHP-s
PHP-s saab ühe muutuja väärtuse omistada teisele:
<?php
$num1 = 1;
$num2 = $num1; // omistame
echo $num1; // 1
echo $num2; // 1
?>
Sellise omistamise korral kirjutatakse uusesse muutujasse esimese muutuja väärtuse koopia. See tähendab, et muutujad ei ole üksteisega kuidagi seotud ja neid saab sõltumatult muuta. Vaadake koodinäidet:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - ei muutunud
?>
Võib aga teha nii, et kopeeritakse mitte muutuja väärtus, vaid viit sellele. Sel juhul ühe muutuja väärtuse muutmisel muutub ka teise muutuja väärtus.
Selleks, et edastada väärtust viidena, tuleb muutuja nime ette panna ampersand:
<?php
$num1 = 1;
$num2 = &$num1; // edastame viidena
?>
Nüüd viimase muutuja muutmine toob kaasa ka teise muutuja muutumise:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - muutus
?>
Samamoodi, kui me muudame esimest muutujat, siis muutub ka teine:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Kirjelda, milline on koodi täitmise tulemus:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Kirjelda, milline on koodi täitmise tulemus:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Kirjelda, milline on koodi täitmise tulemus:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Kirjelda, milline on koodi täitmise tulemus:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>