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

贊助商

分類目錄

贊助商

最新文章

搜索

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

作者:admin    時間:2012-8-20 22:2:42    瀏覽:

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

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

但是這里有一點絕對要注意起來:當一個變量值為0,empty 認為這個變量同等于空,即相當于沒有設置。

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

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

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

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

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

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

引用網(wǎng)摘:

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

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

參考:

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

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

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; 

?>

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