[英]Variable scope difference between PHP and C: block scope is not exactly the same?
以下PHP代碼將輸出3
。
function main() {
if (1) {
$i = 3;
}
echo $i;
}
main();
但是下面的C代碼會引發編譯錯誤。
void main() {
if (1) {
int i = 3;
}
printf("%d", i);
}
那么PHP中的變量不是嚴格的塊范圍的? 在PHP中,內部塊中定義的變量可以用在外部塊中嗎?
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
將不在echo語句的范圍內定義。
在函數之外,永遠不會定義$i
(因為函數具有不同的范圍)。
欲了解更多信息: http : //php.net/manual/en/language.variables.scope.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.