PHP中使用if的時候為什麼建議將常量放在前面?

2022-06-05 11:24:10 字數 707 閱讀 5332

在某些框架或者高手寫的**中,我們會發現有不少人喜歡在進行條件判斷的時候將常量寫在前面,比如:

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要減去乙...