国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

深入分析PHP運算符優(yōu)先級

2024-05-04 23:07:21
字體:
來源:轉載
供稿:網(wǎng)友

剛看PHP手冊中 Boolean 布爾類型 數(shù)據(jù)類型時,看到了評論中一個關于運算符優(yōu)先級的問題,以前也講過在實際項目中不要出現(xiàn)這些需要人為判斷運算符優(yōu)先級的代碼,都應該使用括號來規(guī)避這個問題的出現(xiàn).

周五一朋友來著一段代碼來問我,說他看不懂這段代碼,覺得這段代碼有問題,代碼類似:

  1. $array1 = array(1, 2); 
  2. $array2 = array(3, 4); 
  3. $result = emptyempty($array1) == 3 ? $array1 : $array2

我一看應該是運算符優(yōu)先級的問題.按理說,這些運算符優(yōu)先級的問題是不應該讓它出現(xiàn)在項目代碼中的,只能讓它在面試問題中,程序員應該在書寫代碼過程中使用括號來避免這種不確定問題的出現(xiàn),項目中的代碼應該是那種我們一看就知道結果的,而不是需要我們費勁腦子才能知道結果的,這種優(yōu)先級代碼的結果有時候并不是我們相信的那樣,看看下面的例子:

  1. <?php 
  2. if ($a = 100 && $b = 200) { 
  3.      var_dump($a$b); 

上面代碼也許你會認為是:

  1. <?php 
  2. if ($a = (100 && $b) = 200) { 
  3.      var_dump($a$b); 

但是實際上不是這樣的,實際結果是:

  1. <?php 
  2. if ($a = (100 && $b = 200)) { 
  3.      var_dump($a$b); 

至于為什么會這樣?那是因為PHP并不完全遵守優(yōu)先級的定義,PHP手冊上中有說明

Note: Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.

代碼如下:

  1. <?php 
  2. $x=TRUE; 
  3. $y=FALSE; 
  4. $z=$y OR $x; ?>  
  5. 代碼2:  
  6. <?php 
  7. $x=TRUE; 
  8. $y=FALSE; 
  9. $z=$y || $x
  10. ?> 

這種代碼在實際項目中是不應該出現(xiàn)的,都應該用下面的代碼替換:

$z = ($y OR $x);$z = ($y || $x);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霸州市| 津南区| 富蕴县| 阳谷县| 凤阳县| 临湘市| 松阳县| 甘洛县| 青神县| 大宁县| 嘉祥县| 临西县| 临泉县| 乐业县| 滨州市| 遂昌县| 日喀则市| 铁力市| 绥江县| 绩溪县| 克什克腾旗| 龙岩市| 上高县| 肥西县| 沙坪坝区| 西昌市| 修水县| 汶上县| 山阳县| 黑水县| 左权县| 玉山县| 和林格尔县| 拜城县| 龙井市| 隆德县| 滨海县| 曲靖市| 历史| 金秀| 衡阳县|