今天在研究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
只有這一句話是重點,其他的都是廢話。。。 語法
至於其餘運算優先級。。。 程序
總結一下。。。 總結
實踐出真知! 類型轉換
實踐是檢驗真理的惟一標準!