PHP中一些易混運算符的比較
阿新 • • 發佈:2018-10-28
過程 load image 文檔 插入 這也 浮點 ogr 失去 #0x00 PHP中
==
與 ===
的區別
===比較兩個變量的類型
==只比較他們的值
e.g
比如整數0和浮點數0.0
用==比較返回TRUE
用===比較返回FLASE
###用代碼測試
<?php
$str = "0dff";
if (0 == $str) {
echo "true";
}else{
echo "false";
}
?>
上面的這個程序的輸出結果是true,也就是說在編譯中程序默認0和0dff是相等的。
這是因為在執行關系運算”==“時要求運算符兩邊的數據類型必須一致,所以等號右邊的字符串被強制轉換為了整型0。這也是一系列弱類型語言的一個缺點。
#在php中提供了“===”來解決這個問題
<?php
$str = "0dff";
if (0 === $str) {
echo "true";
}else{
echo "false";
}
這個程序的輸出是false
全等於操作過程如下:
1.判斷全等於操作符2邊的數據類型是否相同 如果不相同,則返回false
2.判斷全等於操作符2邊的值是否相等,如果 不相等,則返回false
3.最後將上面2步的操作進行與操作。返回與操作的結果
#0x01 PHP中 單引號 ‘ ‘
與 雙引號 " "
的區別
雙引號串中的內容可以被解釋而且替換,而單引號串中的內容總被認為是普通字符。
<?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 (同時換行) echo ‘parker is $parker\n‘; // parker is $parker\n ?>
在單引號串中甚至反斜杠也失去了他的擴展含義(除了插入反斜杠\和插入單引號\‘)。
所以,當在字串中進行變量代換和包含\n(換行符)
等轉義序列時,應該使用雙引號。
單引號串可以用在其他任何地方,腳本中使用單引號串處理速度會更快些。
#0x02 PHP中 or
與 ||
的區別
很多人認為PHP中 or
和 ||
是可以劃等號的,一開始我也是這麽認為的,但是其實不是,它們還是存在一個優先級的差別。下面通過一個例子說明它們的差異
<?php $a = false || true; $b = false or true; var_dump($a);//true echo ‘<br />‘; var_dump($b);//false ?>
執行後,$a為true,而$b為false。這是因為||
的優先級大於 =
,先執行 false || true
,然後將執行後的結果true賦值給$a。而or
的優先級小於=
,先將false賦值給$b,因此$b就為false
PHP中一些易混運算符的比較