Ответ 1
PHP имеет только область функций - структуры управления, такие как if
, не вводят новую область. Однако он также не против, если вы используете переменные, которые вы еще не объявили. $i
не будет существовать вне main()
, или если инструкция if терпит неудачу, но вы все равно можете свободно откликнуться на нее.
Если у вас установлен PHP error_reporting для включения уведомлений, он будет вызывать ошибку E_NOTICE
во время выполнения, если вы попытаетесь использовать переменную, которая не была определена. Итак, если у вас есть:
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