++$a 與 $a++ 的差別,在於:變數 $a 加 1 的動作,是在整句程式敘述執行之前做,還是之後做。
例如最簡單的 echo $a++; 等於 echo $a; $a = $a + 1;
而 echo ++$a; 等於 $a = $a + 1; echo $a; 如此而已。
if($c==8) 裡的($c==8) ,裡面的等於加一個和兩個有差嗎?
單個=是賦值,雙個==(或三個===)是邏輯比較,當然有差。
if ($c = $d) 的意思是:把 $d 的值給 $c,並檢查 $c 的值是 true 還是 false。
if ($c == $d) 的意思是:比較 $c 與 $d 在轉成相同型態後的值,是否相等。
if ($c === $d) 的意思是:比較 $c 與 $d 是否型態一樣,值也一樣。
再補充一個寫程式的重要觀念:永遠不要去用你不懂的程式特別語法。那不會顯得寫程式比較厲害,還會讓你下班時間後加班 debug 到抓狂。
依我 15 年 php 的經驗衷心的建議,除非你非常能掌握變數內容,要不然在 php 中的變數邏輯比較,請儘量用三個 ===,而不要用兩個 ==。
請參考:PHP特性引發安全隱患
wiseguy提到:
依我 15 年 php 的經驗
wiseguy大大是真人不露像
沒有出書就可惜了...
去年有讀存儲器大師Mostafa Khalil的經典書,存儲器的眉眉角角写得深入浅出:
http://www.tenlong.com.tw/items/7111438663?item_id=886344
Khalil原是埃及開羅执业药剂师,自学电脑网络技术,10多年成為存儲器方面的專家...
++$a, 先把 $a + 1, 然後取值
$a++, 先取值, 然後把$a + 1
你可以這樣測試:
<pre class="c" name="code">
$a = 1;
echo ++$a, "<br>";
echo $a, "<br>";
$a = 1;
echo $a++, "<br>";
echo $a, "<br>";
你應該會看到:
<pre class="c" name="code">
2
2
1
2
等於的部份, 一個等於是用來把值存進變數, 兩個等於用來比較兩邊是否相等
所以通常在 if 的判斷式裡面, 不會出現一個等於:
<pre class="c" name="code">
if ($a = $b) ....
有些編輯器會對上面這樣的程式顯示警告
其實這樣寫也是正確的語法, 但新手剛學習的話, 你還是把它當成錯誤示範就好
a++ 跟 ++a 就差在 a=a+1
的第一個起數的差別..
後面都是一樣,都是加一的增加下去.
如此, a=0,a++ 就是 a會是 0 1 2 3...
a=0,++a 就是 a 會是 1 2 3 ....
所以 a=1,a++ 就會跟 a=0,++a 一樣..
php 的 = 有分三種 = == ===
1個等於 ,多是用在 變數定意上 $ =
2個等於 , 多用在判段句上 if ( == )
3個等於 ,是絕對等於 ,我也還沒研究過...