Играя с глобалами и ссылками в PHP я столкнулся с проблемой. Я хотел установить переменную для ссылки на другую переменную внутри функции. К моему удивлению, глобальная переменная утратила свою ссылку после вызова функции.
В приведенном ниже коде вы можете видеть, что внутри функции $a
возвращается значение 5
, но после этого она возвращается к своему старому значению (1
). $x
, с другой стороны, сохранил значение, назначенное внутри функции.
<?php
$a = 1;
$x = 2;
function test() {
global $a;
global $x;
$a = &$x;
$x = 5;
echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;
}
test();
echo PHP_EOL;
echo $a . PHP_EOL; // $a is 1 here instead of 5
echo $x . PHP_EOL;
$a = &$x;
echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;
Выходы:
5
5
1
5
5
5
Почему $a
теряет свою ссылку после завершения функции?