php運算子優先順序

技術小胖子發表於2017-11-08

     運算子優先順序指定了兩個表示式繫結得有多“緊密”。例如,表示式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先順序比加號(“+”)高。必要時可以用括號來強制改變優先順序。例如:(1 + 5) * 3 的值為 18。如果運算子優先順序相同,則使用從左到右的左聯順序。

下表從高到低列出了運算子的優先順序。同一行中的運算子具有相同優先順序,此時它們的結合方向決定求值順序。


  1. <?php 
  2. $a = 3 * 3 % 5; // (3 * 3) % 5 = 4 
  3. $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 
  4.  
  5. $a = 1; 
  6. $b = 2; 
  7. $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 
  8. ?> 

使用括號可以增強程式碼的可讀性。

儘管 = 比其它大多數的運算子的優先順序低,PHP 仍舊允許類似如下的表示式:if (!$a = foo()),在此例中 foo() 的返回值被賦給了 $a。

詳細見:http://www.php.net/manual/zh/language.operators.precedence.php

 

博主laoqin2010發現了一個關於php賦值運算子優先順序的問題(一併學習了):

 

正解如下:

 

 

以後一定要多回過頭來複習下基礎知識。

 

      本文轉自許琴 51CTO部落格,原文連結:http://blog.51cto.com/xuqin/1114232,如需轉載請自行聯絡原作者


相關文章