今天項目中遇到的一個問題,舉個栗子:
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是假呀.感覺沒道理可說,所謂道理就是人家規定的.實際寫時多測試吧.
==============================================================================================================