在php中等于和全等于在表達(dá)試上== 和 ===了,從簡(jiǎn)單層面來(lái)說(shuō)就是一個(gè)簡(jiǎn)單等于,一個(gè)是精確定很高,下面我來(lái)給各位同學(xué)介紹== 和 === 的區(qū)別和應(yīng)用,各位同學(xué)可參考.
在php中的符號(hào)等于'=='和全等于'==='的區(qū)別,從表面上看它們都是判斷等號(hào)左右兩把是否相等的功能,只是一個(gè)是兩個(gè)等號(hào),一個(gè)是三個(gè)等號(hào).
我們都應(yīng)該知道,php是一種弱類型的語(yǔ)句,他的變量、字符定義其實(shí)并不十分規(guī)范,比如 $a = '4′;我們可以說(shuō)這個(gè)$a是一個(gè)字符,但是他又可以直接進(jìn)行數(shù)字的加減乘除;而且我們還知道一句話,叫做,非零即真,那么這句好就是對(duì)于==這個(gè)符號(hào)來(lái)說(shuō)的.
實(shí)例代碼如下:
這個(gè)判斷是成立的,他會(huì)輸出ok;因?yàn)?不是零,那么就是真,真就不等于false,所以判斷成立,就會(huì)輸出ok,其實(shí)這里4在判斷比較的時(shí)候,因?yàn)槠鋵?duì)比對(duì)象的原因,所以這個(gè)4被轉(zhuǎn)化為了布爾值ture,所以判斷成立.當(dāng)然如果這里用===也是成立的.
實(shí)例代碼如下:
他也會(huì)輸出ok,因?yàn)?本來(lái)就不是false,他們不是同一個(gè)字符.但是兩者有個(gè)很重要的區(qū)別,就是,==或!=是會(huì)因?yàn)楸葘?duì)的對(duì)象而轉(zhuǎn)化字符類型的,而===或!==是強(qiáng)制他不進(jìn)行轉(zhuǎn)化而原樣進(jìn)行對(duì)比,比如下面一個(gè)例子:
實(shí)例代碼如下:
這個(gè)就不會(huì)輸出ok,因?yàn)?就是false,判斷不成立,但是如果你寫
實(shí)例代碼如下:
實(shí)例代碼如下:
這個(gè)就不會(huì)輸出ok,因?yàn)樗D(zhuǎn)化后相等,判斷不成立,但是如果是
實(shí)例代碼如下:
這個(gè)就會(huì)輸出ok,判斷成立,因?yàn)樵诤愕让媲?有單引號(hào)的4和沒(méi)有單引號(hào)的4并不是同一個(gè)4,一個(gè)是數(shù)字,一個(gè)是個(gè)字符.所以這樣看來(lái)他們的對(duì)比就很簡(jiǎn)單了.他們有什么實(shí)際應(yīng)用呢,就是一些比較特殊的時(shí)候會(huì)用到.比如下面:
實(shí)例代碼如下:
一段代碼來(lái)看,實(shí)例代碼如下:
我們知道數(shù)值0也是代表假的.所以這個(gè)結(jié)果會(huì)輸出"等于".如果我們把程序改下,用全等于的呢
實(shí)例代碼如下:
這時(shí)候我們突然發(fā)現(xiàn)他會(huì)輸出"不等于".這是為什么呢.
因?yàn)椋旱忍?hào)只判斷它們左右兩邊的最終結(jié)果值,而不判斷數(shù)據(jù)類型.而全等于首先判斷等號(hào)兩邊的數(shù)據(jù)類型是否一致.接著還要判斷兩邊的最終結(jié)果值是否一致.如果都一致才會(huì)返回true呢.所以在例子中換成全等于他會(huì)判斷兩邊的數(shù)據(jù)類型,$a 是數(shù)值型.而$b是布爾型,所以他會(huì)返回假值.==' 和 '!=='也是同樣的原理.