1. 程式人生 > >PHP中一些易混運算符的比較

PHP中一些易混運算符的比較

過程 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 
?&gt; 

在單引號串中甚至反斜杠也失去了他的擴展含義(除了插入反斜杠\和插入單引號\‘)。
所以,當在字串中進行變量代換和包含\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中一些易混運算符的比較