在某些框架或者高手寫的**中,我們會發現有不少人喜歡在進行條件判斷的時候將常量寫在前面,比如:
if(1 == $a)
這樣做有什麼好處呢?我們假設乙個不小心的粗心大意,少寫了乙個=號,會有什麼結果。
$a = 'a';
if($a = 'b')
echo $a;
沒錯,111輸出了,$a的值也變成了b。少了乙個等號,就變成了賦值操作,這樣的操作會先給$a賦值,然後根據$a的值進行判斷。如果$a = '',就不會輸出111,但是$a的值還是會變成''。
劃重點:這樣的寫法php是不會報錯的,這也是有可能造成bug的情況。
那麼反過來呢?
$a = 'a';
if('b' = $a)
首先,大部分的ide都會報語法錯誤,也就是直接劃紅線了。常量是不能被賦值修改的,不管是數字、字串還是系統或者我們自己已經定義了的常量。
其次,這種情況下你要是還發現不了這裡有問題的話也沒關係,執行起來也會報錯的,**是無法繼續向下執行的。
當然,這只是乙個小技巧,而且最主要的目的是為了應對粗心帶來的問題。所以並不是強制的規範,有些公司可能會在**審計或者規範文件中強調這樣寫法,當然,最好的還是我們要杜絕這種粗心帶來的錯誤。
測試**:
b站id:482780532
為什麼使用spinlock的時候不能睡眠
跟蹤一下spin lock mr lock 的實現 define spin lock lock spin lock lock define spin lock lock lock lock define lock lock do while 0 注意到 preempt disable 這個呼叫的功能...
為什麼使用抽象類,什麼時候使用抽象類
假設有2個類,乙個類是主力球員,乙個類是替補球員。public class normalplayerpublic string firstnamepublic string lastnamepublic decimal weeksalarypublic string getfullname publ...
為什麼計算機中使用補碼?
週六加班的時候,乙個同事看到我在筆畫二進位制,就問我,這是啥,我跟他bb一大堆,然後他問我一句 為什麼計算機使用補碼,而不使用普通的 原碼 呢?這的確是乙個好問題。討論上述的內容之前,先預設大家都知道如下兩個知識 那麼在補碼沒有出現之前,我們怎麼使用原碼去快速的加減數?我們知道,如果乙個數a要減去乙...