Доброго времени суток!
вопрос по PHPнаткнулся вот на такую особенность в PHP
если написать вот такой код:
<?php
$x=$y;
?>
то будет ошибка:
Notice: Undefined variable: y in путь_к_файлу\имя_файла.php on line 2
что логично, ведь у нас $y ранее не была объявлена.Но если поставить амперсанд & так:
<?php
$x=&$y;
?>
то всё нормально, нет никаких ошибок. хотя тут тоже $y не была ранее объявлена.
Всё выглядит так как буд-то мы с помощью & объявили переменную $y и присвоили ей пустую строку.Вопрос1: есть ли в технической документации по PHP что-то на этот счёт? или это такое неописанное свойство, шаманство какое-то?
и кстати это абсолютно эквивалентно (на этот счет тоже нет в технической документации ничего на счет того что с помощью global можно создать переменную со значением пустой строки «»):
<?php
function test()
{
global $y; // объявлена $y и ей ничего не присвоено
}test();
$x=$y; //тут нет &
print_r($GLOBALS);
?>Вопрос2: есть ли в технической документации по PHP что-то на этот счёт про global? или это тоже такое неописанное свойство, шаманство какое-то?
В первом случае происходит передача ссылки на переменную: $x=&$y;
https://www.php.net/manual/ru/language.references.whatdo.php
спасибо!
а вот этот случай описан в документации? (это эквивалентно тому что я выше написал один в один, тоже не присваиваем $y никаких значений). если описан, то можете ссылку дать? я не смог найти(
<?php
function test()
{
global $y; // объявлена $y и ей ничего не присвоено
}test();
echo gettype($y);
?>
Присвоено.
NULL
Вы помещаете в глобальный массив новый элемент с ключом ‘y’.