За последние 24 часа нас посетили 9907 программистов и 1020 роботов. Сейчас ищут 384 программиста ...

Через & или global в PHP можно объявлять переменную, не присваивая ей значение?

Тема в разделе "PHP для новичков", создана пользователем JonK, 11 май 2022.

  1. JonK

    JonK Новичок

    С нами с:
    31 окт 2021
    Сообщения:
    9
    Симпатии:
    0
    Доброго времени суток!
    вопрос по 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? или это тоже такое неописанное свойство, шаманство какое-то?
     
  2. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    142
    Симпатии:
    16
  3. JonK

    JonK Новичок

    С нами с:
    31 окт 2021
    Сообщения:
    9
    Симпатии:
    0
    спасибо!

    а вот этот случай описан в документации? (это эквивалентно тому что я выше написал один в один, тоже не присваиваем $y никаких значений). если описан, то можете ссылку дать? я не смог найти(

    <?php
    function test()
    {
    global $y; // объявлена $y и ей ничего не присвоено
    }

    test();

    echo gettype($y);

    ?>
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.187
    Симпатии:
    230
    Присвоено.
    NULL
    Вы помещаете в глобальный массив новый элемент с ключом 'y'.