技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

php isset和empty、==(等)和===(恒等)的區(qū)別

作者:admin    時(shí)間:2012-8-20 22:2:42    瀏覽:

一、isset和empty的區(qū)別

單從字面意思理解,empty是判斷一個(gè)變量是否為“空”,而isset 則是判斷一個(gè)變量是否已經(jīng)設(shè)置。

但是這里有一點(diǎn)絕對(duì)要注意起來(lái):當(dāng)一個(gè)變量值為0,empty 認(rèn)為這個(gè)變量同等于空,即相當(dāng)于沒有設(shè)置。

比如當(dāng)我們檢測(cè)$id 變量的時(shí)候,當(dāng)$id=0 ,用empty和isset來(lái)檢測(cè)變量$id是否已經(jīng)配置,兩都將返回不同的值:empty 認(rèn)為沒有配置,isset 則能夠取得$id 的值,看下邊例子:

$id=0;   
empty($id)?print "我是空的":print "我是$id ."; //結(jié)果:我是空的   
!isset($id)?print "我是空的":print "我是$id .";//結(jié)果:我是0  

二、==(等)和===(恒等)的區(qū)別

回顧上面第四條空字符串("")和NULL的區(qū)別,再來(lái)看一個(gè)例子:

'' == NULL;  
'' === NULL; 

運(yùn)行之后你會(huì)發(fā)現(xiàn)第一個(gè)為true,而第二個(gè)則為false!可見==只是比較值是否相等,而===則不但比較值,還會(huì)比較類型,更為嚴(yán)格。

引用網(wǎng)摘:

恒等計(jì)算符,和比較運(yùn)算符號(hào)“==”的區(qū)別是 “==”不會(huì)檢查條件式的表達(dá)式的類型,恒等計(jì)算符會(huì)同時(shí)檢查表達(dá)式的值與類型。
這主要和php是無(wú)類型語(yǔ)言有關(guān),比如 NULL,FALSE,array(),”",0,”0″這幾個(gè)值如果用==他們是相等的,但是你如果判斷出某個(gè)值真正的返回值呢,就可以用 ===
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立

===運(yùn)算符還是很有用的,php有些內(nèi)置函數(shù)成功會(huì)返回某個(gè)值,失敗會(huì)返回false,假如成功了但返回的是”"或者0之類的空值你怎么判斷成功或者失敗呢?這是就可以用 === ,它可以區(qū)分變量類型。

參考:

比較運(yùn)算符 例子 名稱 結(jié)果
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它們的類型也相同。(PHP 4 引進(jìn))
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它們的類型不同。(PHP 4 引進(jìn))
$a < $b 小與 TRUE,如果 $a 嚴(yán)格小于 $b。
$a > $b 大于 TRUE,如果 $a 嚴(yán)格 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

如果比較一個(gè)整數(shù)和字符串,則字符串會(huì)被轉(zhuǎn)換為整數(shù)。如果比較兩個(gè)數(shù)字字符串,則作為整數(shù)比較。此規(guī)則也適用于 switch語(yǔ)句。

view sourceprint?<?php 
var_dump(0 == "a"); // 0 == 0 -> true 
var_dump("1" == "01"); // 1 == 1 -> true 
var_dump("1" == "1e0"); // 1 == 1 -> true 
switch ("a") { 
    case 0: 
    echo "0"; 
    break; 
    case "a": // never reached because "a" is already matched with 0 
    echo "a"; 
    break; 

?>

標(biāo)簽: 腳本  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */