讓我們來先看一道題:
<?php
$a = 1;
$b = $a + $a++; //結果:$a=2,$b=3
這道題不是很難,顯然在PHP中 ++ 的優先級比 + 高,所以先執行 $a++,這時 $a的值為2
再看一題:
<?php
$a = 1;
$b = $a + $a + $a++;
這時 $b 的值應該是多少呢?
答案是:3
為什麼還是3呢?不是 ++ 的優先級比 + 高嗎?先執行 $a++ 後,$a的值應該是2,結果是5才對啊。
其實這是正確答案是 3,一開始自己也認為應該是5。
解釋:
運算符是從左邊往右結合的,上面的表達式相當於
$ = ($a+$a) + $a++
根據左結合的原則
//先計算 $a+$a
$b = 2 + $a++;
//這時就要比較 + 和 ++ 的運算符優先級了
$b = 2 + 1; //這時$a = 2
這是都是蛋疼的PHP筆試題,在實際項目代碼中應該使用括號來避免這些問題的出現。