Убедитесь, что сценарий содержит
<?php
перед кодом, который должен быть выполнен. Между <?
и php
в этом не должно быть пробелов.
Это синтаксически корректно, так как точка объявления переменной находится перед ее инициализатором, и имя доступно в любом месте после этой точки. Это позволяет менее изворотливые инициализации, такие как
void *p = &p;
, который на законном основании использует имя (но не значение) инициализированной переменной.
Это поведение неверно, поскольку использование значения Неинициализированный объект дает неопределенное поведение. Это не ошибка, требующая диагноза (так как в целом может быть сложно или невозможно проанализировать поток программы, чтобы увидеть, был ли объект инициализирован), но, как вы заметили, многие компиляторы выдают предупреждение для простых случаев, подобных этому .