激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php empty,isset,is_null判斷比較(差異與異同)

php empty,isset,is_null判斷比較(差異與異同)

2019-11-11 13:00php教程網 PHP教程

做php開發時候,想必在使用:empty,isset,is_null 這幾個函數時候,遇到一些問題。甚至給自己的程序帶來一些安全隱患的bug。很多時候,對于isset,empty都認為差不多。因此開發時候,就沒有注意,一段作為流程判斷時候,就出現bug問題

一、舉例說明 
A.一個變量沒有定義,我們該怎么樣去判斷呢 

復制代碼代碼如下:


<?php 
#不存在$test 變量 

$isset= isset($test)?"test is define!":"test is undefine!"; 
echo "isset:$isset\r\n"; 

$empty=!empty($test)?"test is define!":"test is undefine!"; 
echo "empty:$empty\r\n"; 

$is_null=is_null($test)?"test is define!":"test is undefine!"; 
echo "is_null:$is_null\r\n"; 

結果出來了:empty,isset首先都會檢查變量是否存在,然后對變量值進行檢測。而is_null 只是直接檢查變量值,是否為null,因此如果變量未定義就會出現錯誤!

B、看下各自接收的參數是什么?

isset函數參數:

<?php
$test=100;
echo isset($test),isset(100),$isset($b=100);

 

<br />
<b>Parse error</b>:  parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in <b>PHPDocument3</b> on line <b>3</b><br />

empty函數參數:

<?php
$test=100;

echo empty($test),empty(100),empty($b=100);

 

<br />
<b>Parse error</b>:  parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in <b>PHPDocument3</b> on line <b>3</b><br />

is_null函數參數:

<?php
$test=100;

echo is_null($test),is_null(100),is_null($b=100);

運行結果:沒有任何錯誤。

比較結果出來了:empty,isset輸入參數必須是一個變量(php變量是以$字符開頭的),而is_null輸入參數只要是能夠有返回值就可以。(常量,變量,表達式等)。在php手冊里面,對于他們解析是:empty,isset 是一個語言結構而非函數,因此它無法被變量函數調用。

二、概括總結isset,empty,is_null區別: 
剛才介紹的:檢查變量,以及參數類型,這個是這3個函數不同之處的基礎,也是最容易被忽視的。看到網上有很多對這個3個函數進行比較文章。很少涉及這些。下面我要說的,是在都檢查已存在變量情況下,不同之處。 

實例: 

復制代碼代碼如下:


<?php 
$a=100; 
$b=""; 
$c=null; 
//isset檢查 
echo "isset","\$a=$a",isset($a)?"define":"undefine","\r\n"; 
echo "isset","\$b=$b",isset($b)?"define":"undefine","\r\n"; 
echo "isset","\$c=$c",isset($c)?"define":"undefine","\r\n"; 
unset($b); 
echo "isset","\$b",isset($b)?"define":"undefine","\r\n"; 
$b=0; 
echo "\r\n\r\n"; 

//empty檢查 
echo "empty","\$a=$a",!empty($a)?"no empty":"empty","\r\n"; 
echo "empty","\$b=$b",!empty($b)?"no empty":"empty","\r\n"; 
echo "empty","\$c=$c",!empty($c)?"no empty":"empty","\r\n"; 
unset($b); 
echo "empty","\$b",!empty($b)?"no empty":"empty","\r\n"; 
$b=0; 
echo "\r\n\r\n"; 

//is_null檢查 
echo "is_null","\$a=$a",!is_null($a)?"no null":"null","\r\n"; 
echo "is_null","\$b=$b",!is_null($b)?"no null":"null","\r\n"; 
echo "is_null","\$c=$c",!is_null($c)?"no null":"null","\r\n"; 
unset($b); 
echo "is_null","\$b",is_null($b)?"no null":"null","\r\n"; 


通過上面這個簡單測試,我們可以大體知道,當一個變量存在情況下:isset,empty,is_null檢測,得到值情況了。上面沒有舉例更多變量。其實測試發現: 

empty 

如果 變量 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var、未定義; 以及沒有任何屬性的對象都將被認為是空的,如果 var 為空,則返回 TRUE。 

isset 

如果 變量 存在(非NULL)則返回 TRUE,否則返回 FALSE(包括未定義)。變量值設置為:null,返回也是false;unset一個變量后,變量被取消了。注意,isset對于NULL值變量,特殊處理。 

is_null 

檢測傳入值【值,變量,表達式】是否是null,只有一個變量定義了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定義變量傳入后會出錯!】. 


疑問:怎么樣判斷一個變量被設置了,并且值為NULL呢? 

通過上面比較,估計大家與我一樣,會有這個問題浮現在腦海里面。 檢測一個變量是否是null 可以用:is_null,但如果變量未定義用它檢測會出錯。因此,我們想到,檢測變量是否定義可以用:isset,但是如果一個變量值是:null, 則它會返回false . 哈哈,這個問題怎么樣解決呢?等待大家分享…… 

檢查變量存在,并且值為NULL.

復制代碼代碼如下:


<?php 
function checkNull($a) 

if(array_key_exists($a,$GLOBALS)) 

global $$a; 
if(is_null($$a)) 
return true; 

return false; 

$test=null; 
var_dump(checkNull("test")); 
var_dump(checkNull("test1"));

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色999中文字幕 | 伊人在线视频 | 欧美在线小视频 | jizzjizzxxxxx| 一本色道久久综合狠狠躁篇适合什么人看 | 亚洲无av| 久久久久久久久久久久99 | 国产精品v片在线观看不卡 国产另类一区 | 国产资源在线免费观看 | 91精品久久久久久久久 | 欧美色大成网站www永久男同 | 精品一区二区三区欧美 | 欧美一区中文字幕 | 欧美中文字幕一区二区 | 黑色丝袜美美女被躁视频 | 久久国产精品小视频 | 12av电影| 综合精品久久 | 日本精品视频一区二区三区四区 | 久久成人精品视频 | 国产精品一品二区三区四区18 | fc2成人免费人成在线观看播放 | 国产精品视频成人 | 精品一区二区三区中文字幕老牛 | 免费毛片播放 | 一级做a爰片性色毛片2021 | 操你视频 | 亚洲成人中文字幕在线 | 亚洲精品一区二区三区在线看 | 欧美一级毛片欧美一级成人毛片 | 国产乱淫a∨片免费观看 | 久久国产精品99国产 | 久久网一区二区 | 久久久三区| 日韩av电影免费看 | 久久国产精品二国产精品 | 九九综合视频 | 色的综合| 欧美一级高潮 | 欧美日韩在线播放一区 | 国产精品久久久久久久不卡 |