PHP中的$a和$a是在開發中經常使用和容易混淆的兩個變量名。他們兩個在語法上雖然沒有任何區別,但在變量的作用域上則有很大的不同。首先看下面這個例子:
$a = 1; $b = $a++; echo "a=$a, b=$b";通過上面這個例子我們可以看到,$a是1,而$b則是$a的副本,值為1,最后$a自增變成2。那么,為什么會出現$a自增后仍然為1的情況呢?我們再來看下面這個例子:
$a = 1; $b = ++$a; echo "a=$a, b=$b";通過上面這個例子我們可以看到,$a和$b都是2,而原因卻是不一樣的。因為++在$a后面,所以$b先等于$a++,也就是等于1,然后$a再自增變成了2。而在$b等于$a+1之前,$a已經自增變成了2。所以$b最后也是2。 可能一看到這些代碼就暈了,咱們再來說說變量的作用域。在PHP中,單引號和雙引號在變量解析的時候是有區別的。我們再來看下面的代碼:
$a = 1; echo '$a=$a'; echo "在單引號中,$a不會被解析,echo輸出$a=$a。而在雙引號中,$a被解析成了1,echo輸出1=1。這就是單引號和雙引號的區別,一個會解析,一個則不會。 最后,我們再看下面的這個例子:
"; echo "$a=$a";
function test($a) { global $a; return $a + $a; } $a = 1; $b = test(2); echo "a=$a, b=$b";在上面的代碼中,我們定義了一個test函數,這個函數有一個參數$a,而這個參數與函數外部的$a是沒任何關系的。如果我們想在函數內部使用函數外部的$a變量,則需要使用global關鍵字,將全局變量$a引入函數體內。這樣我們在函數內部,可以直接使用全局變量$a,而不會再創建一個局部變量。 綜上所述,$a和$a雖然在語法上沒有區別,但在變量的作用域上則有明顯的不同。在使用中要仔細區分,以免出現不必要的錯誤。
上一篇php $a =