PHP的if判斷,為什麼要寫兩個條件

來源:互聯網
上載者:User
PHP的if判斷,為什麼要寫兩個條件,唯寫一個 $str==='string'不是也一樣嗎?
是出於速度的考慮嗎?
代碼如下,

    if(isset($str) && $str==='string'){        ...    }

回複內容:

PHP的if判斷,為什麼要寫兩個條件,唯寫一個$str==='string'不是也一樣嗎?
是出於速度的考慮嗎?
代碼如下,

    if(isset($str) && $str==='string'){        ...    }

如果PHP處理一個未聲明的變數就會觸發一個Notice錯誤,問題不大並不會終止程式的運行
但,這是寫一個嚴謹程式的壞習慣
特別是在使用FrameWork的時候,Notice錯誤會被catch,並終止程式的運行。

所以,

// 判斷一個變數是否存在isset($attr)    // $attr等於null或許未聲明,將返回false // 判斷一個變數是否有值,請使用empty($attr)    // $attr等於'0'或''或0或null,將返回true// 壞習慣 讓弱類型的PHP去處理,看似很省心的卻可能帶來意想不到的結果if($attr) 

人們在追尋問題的答案的時候,卻總是忘記追尋問題本身的意義。

  • 如果前面的代碼已經明確 $str 變數的存在,何必加一句 isset($str)
  • 如果前面的代碼不能表明 $str 變數的存在,為什麼不加 isset($str)

$str 如果沒 set 就會報 undifined的錯誤, 你用===和==又有什麼區別。

我的理解是程式會先判斷

isset($str);

如果結果是$str沒有設定,那麼就不用再繼續去判斷

$str==='string';

從而節省了執行的時間

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.