В PHP ссылка НЕ является указателем.Это что-то вроде псевдонима другой переменной.Я объясню, что происходит с вашим кодом:
$one = 1;
$two = 2;
$ref = &$one;
После трех приведенных выше команд мы имеем:
variables | $one | $ref | $two |
content | 1 | 2 |
Как видите, $one
и $ref
относятся к то же самое содержание, это то, что означает термин reference
.Продолжить:
global $ref, $two;
В соответствии с этим документом , указанная выше команда аналогична:
$ref =& $GLOBALS['ref'];
$two =& $GLOBALS['two'];
Итак, мы имеем:
variables | $one (global) | $ref(global) | $ref (local) | $two (global) | $two (local) |
content | 1 | 2 |
Да, у нас есть 5 переменных!Продолжить:
$ref = &$two;
Это на самом деле:
$ref (local) = &$two (local);
Итак, у нас есть:
variables | $one (global) | $ref(global) | $ref (local) | $two (global) | $two (local) |
content | 1 | 2 |
И последняя команда:
echo $ref;
На самом деле это:
echo $ref (global);
И, 1
- правильное значение!
Дополнительно:
change();
echo $two;
function change(){
global $ref, $two;
$ref = &$two;
$ref = 9;
}
Результат этого кода 9
;
----- РЕДАКТИРОВАТЬ -----
Я не внимательно прочитал вопрос.Мой ответ на часть The result of the code is "1". I don't really understand why
.Ответ Джонатана Ганга - это то, что вы ищете.