我們知道,函式、類會改變當前變數的作用域。if,while等分支迴圈結構會繼承外部作用域,即外部變數對分支迴圈結構內部可見。
但是c語言不支援if,while等分支迴圈結構內部作用域對外可見,而php則不然。
在php中,if,while等分支迴圈結構中宣告的區域性變數,在分支迴圈結構後面仍然有效。
比如,函式中宣告的變數在函式外面是不可見的
c語言:
#includeint foo()int main()
報錯:scope.c: in function 『main』:
scope.c:11: 錯誤:『bar』 未宣告 (在此函式內第一次使用)
scope.c:11: 錯誤:(即使在乙個函式內多次出現,每個未宣告的識別符號在其
scope.c:11: 錯誤:所在的函式內只報告一次。)
php語言:
<?phpfunction foo()
echo $bar;
報錯:notice: undefined variable: bar in scope.php on line 7
php notice: undefined variable: bar in scope.php on line 7
而if,while等迴圈分支結構會繼承外部作用域,即外部變數對迴圈分支結構內部可見
類似的:
c語言:
#includeint main()while(1)
return 0;
}
輸出:php語言:
<?php$foo = 1;
if(1)
while(1)
輸出:但是不一樣的地方來了。
c語言:
#includeint main()printf("%d\n",bar);
while(1)
printf("%d\n",bar);
return 0;
}
報錯:scope.c: in function 『main』:
scope.c:12: 錯誤:『bar』 未宣告 (在此函式內第一次使用)
scope.c:12: 錯誤:(即使在乙個函式內多次出現,每個未宣告的識別符號在其
scope.c:12: 錯誤:所在的函式內只報告一次。)
php語言
<?php$foo = 1;
if(1)
echo $bar,"\n";
while(1)
echo $bar2,"\n";
輸出:這就是需要注意的地方!
PHP中變數的作用域
在php指令碼中變數主要有 內建超級全域性變數,一般的變數,常量,全域性變數,靜態變數等等,我們在使用它們的時候除了要正確地知道它們的語法以外,更重要的是,我們要知道它們在本質上的區別與聯絡 即它們的作用域的問題。1.內建超級全域性變數可以在指令碼的任何地方使用和可見。即是說,如果我們在乙個php頁...
PHP中變數的作用域
1 超級變數 post,get,global,cookie,files,env,request,session 在指令碼的任何地方可以直接使用。2 常量,被宣告以後,可以供該宣告後的所有位置使用。如 function changename changename echo you are a gooo...
C 中變數的作用域
作用域 scope 是程式的一部分,在其中名字有其特定含義 c 語言中大多數作用域都以花括號分隔 注意 同乙個名字在不同的作用域中可能是指向的是不同的實體,實體的有效區域始於名字的宣告語句,以宣告語句所在的作用域末端結束 int main 如上面的程式的例子,main定義於所有花括號之外,所以是擁有...