成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP運算符優(yōu)先級的案例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹PHP運算符優(yōu)先級的案例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站托管維護、企業(yè)網(wǎng)站設計、黃山網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

                                                           

今天在老王的技術(shù)手冊看到一個問題:

<?php
if ($a = 100 && $b = 200) {
     var_dump($a, $b);
}

輸出是什么?

這個問題, 咋一看或許覺得簡單, 但其實仔細推敲并不簡單,

如果說布爾與之前的部分, 是由于優(yōu)先級的問題, 但是如果僅僅是優(yōu)先級的問題的話, 那么結(jié)果應該是:

$a = (100 && $b) = 200

而實際上的結(jié)果, 確實高優(yōu)先級的&&讓步給次優(yōu)先級的=, 讓 $b = 200 先結(jié)合了.

究其原因, 是因為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.

這樣的設計, 個人不發(fā)表看法, 反正在C語言中, 這樣類似的語句是判定為語法錯的. PHP采用這樣的設計, 很可能是歷史原因,

有好奇的同學, 會想知道到底為什么, 之前jayeeliu網(wǎng)友也問過:

laruence你好:

問一個php運算符優(yōu)先級的問題

$t == 1 && $tt = 2

按照php運算符優(yōu)先級應該是

(($t == 1) && $tt) = 2

這個順序執(zhí)行,但實際上應該是

($t == 1) && ($tt = 2)

我有些不太理解。

其實也簡單, 運算符優(yōu)先級是在存在二義性文法的時候的一種規(guī)約規(guī)則選擇的手段, 而PHP的語法分析文件定義中, 卻讓等號和T_BOOLEAN_AND(&&)之前不存在了規(guī)約沖突:

expr_without_variable:
  // 有隱規(guī)則存在, 相當于T_BOOLEAN_AND成為了"一元操作符".
  |   expr T_BOOLEAN_AND  { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr

最后, 順便說一下, PHP對應于T_BOOLEAN_AND 還定義了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 這倆個的優(yōu)先級都低于等號, 于是就會有了, 很多PHP入門教材示例代碼中經(jīng)典的:

$result = mysql_query(*)  or die(mysql_error());

類似的還可以用or來實現(xiàn)三元操作符(?:)的功能:

$person = $who or $person = "laruence";
//等同于:
$person = empty($who)? "laruence" : $who;

以上是PHP運算符優(yōu)先級的案例分析的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標題:PHP運算符優(yōu)先級的案例分析-創(chuàng)新互聯(lián)
鏈接URL:http://jinyejixie.com/article18/ddsegp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化App開發(fā)、靜態(tài)網(wǎng)站微信公眾號、外貿(mào)網(wǎng)站建設、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
宜丰县| 古交市| 新乡县| 长阳| 会同县| 商洛市| 敖汉旗| 乌拉特后旗| 长武县| 溧水县| 江华| 厦门市| 乾安县| 文化| 石阡县| 招远市| 河间市| 喜德县| 杨浦区| 高州市| 军事| 革吉县| 静海县| 陆川县| 镇平县| 淳化县| 同德县| 精河县| 福建省| 沁阳市| 滦南县| 南昌市| 汉沽区| 仪陇县| 万山特区| 英吉沙县| 南昌市| 凤山县| 扎囊县| 陇南市| 温州市|