PHP比較運(yùn)算符的詳細(xì)介紹
比較運(yùn)算符種類
如同它們名稱所暗示的,允許對兩個(gè)值進(jìn)行比較。比較運(yùn)算符有如下幾個(gè):
1) $a > $b 大于:如果 $a 嚴(yán)格大于$b,則返回TRUE
2) $a < $b 小于:如果 $a 嚴(yán)格小于$b,則返回TRUE
3) $a >= $b 大于等于:如果 $a 大于等于$b,則返回TRUE
4) $a <= $b 小于等于:如果 $a 小于等于$b,則返回TRUE
5) $a <> $b 不等于:如果 $a 不等于$b,則返回TRUE
6) $a != $b 不等于:如果 $a 不等于$b,則返回TRUE(同上)
7) $a == $b 等于:如果 $a等于 $b,則返回TRUE
8) $a === $b 全等于:如果 $a等于 $b,并且它們的類型也相同,則返回TRUE
9) $a !== $b 不全等于:如果 $a 不等于 $b,或者它們的類型不同,則返回TRUE
其中,我們要重點(diǎn)區(qū)分一下“等于”和“全等于”,$a == $b只是對兩個(gè)變量的值進(jìn)行了比較運(yùn)算,而全等于要對運(yùn)算符兩邊的表達(dá)式同時(shí)進(jìn)行值的比較和數(shù)據(jù)類型的比較,只有兩邊的值都相等,運(yùn)算結(jié)果才是“真”。結(jié)合“不全等”運(yùn)算符舉例來說,$a = 2; var_dump($a!==2);這個(gè)表達(dá)式返回值是“假”,因?yàn)?是等于2的。另外,$a = 2;是整型而var_dump($a!==2);里的2也是整型,但運(yùn)算符是不全等于"!=="所以結(jié)果是假,因?yàn)?是等于2的。反過來如果是這樣$a = 2; var_dump($a!=='2');運(yùn)算結(jié)果就是“真”的,因?yàn)?不等于'2',后面的'2'是一個(gè)字符串的'2',即不全等于不僅僅只是比較變量值,還要對變量的數(shù)據(jù)類型進(jìn)行比較。
PHP中比較不同類型的結(jié)果
如果PHP比較運(yùn)算符比較一個(gè)整數(shù)和字符串,則字符串會(huì)被轉(zhuǎn)換為整數(shù)后比較。如果比較兩個(gè)數(shù)字字符串,則會(huì)把它們作為整數(shù)比較,另外此規(guī)則也適用于 switch 語句。
比如:
var_dump(0 == "a"); // 返回TRUE,"a"被轉(zhuǎn)為0
var_dump("1" == "01"); // 返回TRUE,當(dāng)做整數(shù)處理
string或null和string的比較:將NULL 轉(zhuǎn)換為 "",進(jìn)行數(shù)字或字符串的比較
bool或null間的比較:轉(zhuǎn)換為bool,F(xiàn)ALSE < TRUE
object內(nèi)置類可以定義自己的比較,不同類不能比較,相同類則比較屬性
string,resource 或 number間的比較:將字符串和資源轉(zhuǎn)換成數(shù)字,按普通數(shù)學(xué)比較
array間的比較:具有較少成員的數(shù)組較小,如果運(yùn)算數(shù) 1 中的鍵不存在于運(yùn)算數(shù) 2 中則數(shù)組間無法比較,需要逐個(gè)值比較(見如下代碼)
array和任何其它類型比較:array 總是更大
object和任何其它類型比較:object 總是更大
數(shù)組比較代碼:
function standard_array_compare($op1, $op2)
{
if (count($op1) < count($op2)) { //具有較少成員的數(shù)組較小
return -1; // $op1 < $op2
} elseif (count($op1) > count($op2)) {
return 1; // $op1 > $op2
}
foreach ($op1 as $key => $val) {
if (!array_key_exists($key, $op2)) {
return null;
} else if ($val < $op2[$key]) {
return -1;
} elseif ($val > $op2[$key]) {
return 1;
}
}
return 0; // $op1 == $op2
}
比較運(yùn)算符中的三元運(yùn)算符:
表達(dá)式 (expr1) ? (expr2) : (expr3) 當(dāng)表達(dá)式expr1 的值為 TRUE 時(shí)的值為expr2,當(dāng)表達(dá)式 expr1 的值為 FALSE 時(shí)的值為expr3。
以上就是比較運(yùn)算符的重點(diǎn)內(nèi)容了,文中對這些運(yùn)算符和比較規(guī)則進(jìn)行了解析,后面就要通過更多的練習(xí)才能把這些內(nèi)容進(jìn)行掌握和消化。
相關(guān)文章
PHP從零開始打造自己的MVC框架之路由類實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP從零開始打造自己的MVC框架之路由類實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了MVC框架路由類的原理及定義方法,需要的朋友可以參考下2019-06-06
php文件包含目錄配置open_basedir的使用與性能詳解
下面小編就為大家?guī)硪黄猵hp文件包含目錄配置open_basedir的使用與性能詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式對比分析了swoole和redis異步任務(wù)具體實(shí)現(xiàn)方法及區(qū)別,需要的朋友可以參考下2019-08-08
Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹
這篇文章主要介紹了Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹,本文講解了@yield 與 @section、@show 與 @stop、@append 和 @override的區(qū)別,需要的朋友可以參考下2015-02-02
PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
這篇文章主要介紹了PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法,結(jié)合實(shí)例形式分析了php常見時(shí)間戳轉(zhuǎn)換與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-03-03

