PHP運算優先級——神通常的設定

今天在研究sina的開放平臺SDK的時候常常會發現這麼一種寫法: php

@$var_a or $var_a = "a string or others";
炸一看!這是什麼個意思?徹底沒見過的用法啊。。。

後來冷靜下來一想,應該是先判斷$var_a是否爲真(或者是否存在、是否爲 null……),若是判斷爲假(這個過程應該有類型轉換)則會繼續執行or後面的內容,這樣就會給$var_a賦值。反之若是$var_a原本就存在,即 判斷爲真,則不執行後面的內容(事實上也的確不須要了)。用法跟下面這個有殊途同歸之妙。。。 程序員

isset($var_a) ? : $var_a = "asdasdads";
不過我的比較傾向於後面這種寫法,至少小夥伴們沒有驚呆。。。

跑題了,今天主要目的是討論PHP中運算的優先級 spa

由上面的例子能夠看出來,賦值符「=」的優先級>或「or」???這。。。跟之前的價值觀徹底不同啊。。。僅存的一絲良知告訴我:邏輯運算符的優先級應該大於賦值符。可是爲何會不同呢???難道這些年都白活了???個人價值觀難道一直都是錯的麼??? code

繼 續深刻研究了一下。PHP中貌似有兩種邏輯運算符「||」和「or」,「&&」和「and」等,當時天真的認爲兩種寫法是等價的,這種設 定。。。要麼是PHP從雜揉向標準的一個過渡,要麼是使不一樣程序員都能適應PHP的語法。。。事實證實,這種想法太天真了。。。 string

事實證實:  "||、&&"   >  "="   >   「or、and」 class

只有這一句話是重點,其他的都是廢話。。。 語法

至於其餘運算優先級。。。 程序

總結一下。。。 總結

實踐出真知! 類型轉換

實踐是檢驗真理的惟一標準!

相關文章
相關標籤/搜索