#0x00 PHP中 ==
與 ===
的區(qū)別
10多年建站經(jīng)驗(yàn), 網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)客戶的見(jiàn)證與正確選擇。創(chuàng)新互聯(lián)提供完善的營(yíng)銷型網(wǎng)頁(yè)建站明細(xì)報(bào)價(jià)表。后期開(kāi)發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
===比較兩個(gè)變量的類型
==只比較他們的值
e.g
比如整數(shù)0和浮點(diǎn)數(shù)0.0
用==比較返回TRUE
用===比較返回FLASE
###用代碼測(cè)試
上面的這個(gè)程序的輸出結(jié)果是true,也就是說(shuō)在編譯中程序默認(rèn)0和0dff是相等的。
這是因?yàn)樵趫?zhí)行關(guān)系運(yùn)算”==“時(shí)要求運(yùn)算符兩邊的數(shù)據(jù)類型必須一致,所以等號(hào)右邊的字符串被強(qiáng)制轉(zhuǎn)換為了整型0。這也是一系列弱類型語(yǔ)言的一個(gè)缺點(diǎn)。
#在php中提供了“===”來(lái)解決這個(gè)問(wèn)題
這個(gè)程序的輸出是false
全等于操作過(guò)程如下:
1.判斷全等于操作符2邊的數(shù)據(jù)類型是否相同 如果不相同,則返回false
2.判斷全等于操作符2邊的值是否相等,如果 不相等,則返回false
3.最后將上面2步的操作進(jìn)行與操作。返回與操作的結(jié)果
#0x01 PHP中 單引號(hào) ' '
與 雙引號(hào) " "
的區(qū)別
雙引號(hào)串中的內(nèi)容可以被解釋而且替換,而單引號(hào)串中的內(nèi)容總被認(rèn)為是普通字符。
<?php $parker = 2; echo "parker is $parker"; // parker is 2 echo 'parker is $parker'; // parker is $parker echo "parker is $parker\n"; // parker is 2 (同時(shí)換行) echo 'parker is $parker\n'; // parker is $parker\n ?>
在單引號(hào)串中甚至反斜杠也失去了他的擴(kuò)展含義(除了插入反斜杠\和插入單引號(hào)\')。
所以,當(dāng)在字串中進(jìn)行變量代換和包含\n(換行符)
等轉(zhuǎn)義序列時(shí),應(yīng)該使用雙引號(hào)。
單引號(hào)串可以用在其他任何地方,腳本中使用單引號(hào)串處理速度會(huì)更快些。
#0x02 PHP中 or
與 ||
的區(qū)別
很多人認(rèn)為PHP中 or
和 ||
是可以劃等號(hào)的,一開(kāi)始我也是這么認(rèn)為的,但是其實(shí)不是,它們還是存在一個(gè)優(yōu)先級(jí)的差別。下面通過(guò)一個(gè)例子說(shuō)明它們的差異
';
var_dump($b);//false
?>
執(zhí)行后,$a為true,而$b為false。這是因?yàn)?code>||的優(yōu)先級(jí)大于 =
,先執(zhí)行 false || true
,然后將執(zhí)行后的結(jié)果true賦值給$a。而or
的優(yōu)先級(jí)小于=
,先將false賦值給$b,因此$b就為false