Референции в PHP
В PHP може да присвоите стойност на една променлива в друга:
<?php
$num1 = 1;
$num2 = $num1; // присвояваме
echo $num1; // 1
echo $num2; // 1
?>
При такова присвояване в новата променлива се записва копие на стойността на първата променлива. Това означава, че променливите не са свързани по никакъв начин една с друга и могат да се променят независимо. Вижте в примера с код:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - не се е променило
?>
Може, обаче, да се направи така, че да се копира не стойността на променливата, а референция към нея. В този случай при промяна на стойността на едната променлива, ще се променя и стойността на другата.
За да предадете стойност по референция, трябва пред името на променливата да поставите амперсанд:
<?php
$num1 = 1;
$num2 = &$num1; // предаваме по референция
?>
Сега промяната на първата променлива ще доведе и до промяна на втората:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - променено
?>
Аналогично, ако променим първата променлива, ще се промени и втората:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Разкажете, какъв ще бъде резултатът от изпълнението на кода:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Разкажете, какъв ще бъде резултатът от изпълнението на кода:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Разкажете, какъв ще бъде резултатът от изпълнението на кода:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Разкажете, какъв ще бъде резултатът от изпълнението на кода:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>