PHP имеет только область действия функции - структуры управления, такие как if
, не вводят новую область действия. Однако, это также не против, если вы используете переменные, которые вы не объявили. $i
не будет существовать вне main()
или в случае сбоя оператора if, но вы все равно можете свободно его выводить.
Если в PHP установлен error_reporting для включения уведомлений, он выдаст E_NOTICE
error во время выполнения , если вы попытаетесь использовать переменную, которая не была определена. Так что, если у вас было:
function main() {
if (rand(0,1) == 0) {
$i = 3;
}
echo $i;
}
Код будет работать нормально, но некоторые выполнения будут отображать '3' (когда if
завершится успешно), а некоторые вызовут E_NOTICE
и ничего не отобразят, так как $i
не будет определен в области видимости заявления эха.
За пределами функции $i
никогда не будет определено (поскольку функция имеет другую область действия).
Для получения дополнительной информации: http://php.net/manual/en/language.variables.scope.php