Ссылки в 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;
?>