php " ",0,'0',false ==判斷


今天項目中遇到的一個問題,舉個栗子:

if($_GET['is_has_idcard']==0 || $_GET['is_has_idcard']==1){

  echo '這次我要上傳身份證';

}

if($_GET['marry_mes']!=''){

  echo '這次我要上傳婚姻信息';

}

這樣的判斷,當沒有傳值is_has_idcard的時候,也會echo 這次我要上傳身份證。就這個判斷寫法在我們的流程中成了個bug ,百度學一下,基礎還是得打啊。。。

===========================================================================================================
下列哪一個是假:
A、0=="0";
B ""== "0"
C “”==0
D false=="0"
請解釋下PHP在這些情況下以哪種類型比較的標准是什么?

答案:

A,真
B,假
C,真
D,真
PHP是一種弱類型語言,字符串,數,布爾,有時它自作聰明地幫你轉化,這種轉化有時帶來方便,有時帶來惱火.A:字符數字與數可以互相轉化,這個大家都知道,B:空字符串與0字符串當然不一樣.C:空就是0,D:0字符可以認為是假的.
如上就產生了一個問題:因為""==0, 0=="0" ,所以,""=="0",就是B了,而B是假的,MD,糾結了.
這里因為PHP只作了兩兩轉換,所以上面推理雖然是那么糾結.但事實上“”不能直接轉化為“0”的.
對於D這條,你說得有道理,我也覺得0也是有字符啊, 但是“0”可轉化為0,0是假呀.感覺沒道理可說,所謂道理就是人家規定的.實際寫時多測試吧.

==============================================================================================================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM