php中empty()、isset()、is_null()和變數本身的布林判斷區別(轉)
在php指令碼中,我們經常要去判斷一個變數是否已定義或者是否為空,就需要用到這些函式empty()、isset()、is_null()和其本身作為引數,下面小段程式做個簡要比較
<?php
//預定義變數陣列:空字元,字元0,陣列0,null,布林false,空陣列
$arr_var = array(``, `0`, 0, null, false, array());
foreach ($arr_var as $value) {
echo `<br>傳入值為:` . $value . `<br>`;
if (!isset($value)) {
echo `isset()==false<br>`;
}
if (empty($value)) {
echo `empty()==true<br>`;
}
if (!$value) {
echo `self==false<br>`;
}
if (is_null($value)) {
echo `is_null()==true<br>`;
}
}
?>
輸出結果:
傳入值為:
empty()==true
self==false
傳入值為:0
empty()==true
self==false
傳入值為:0
empty()==true
self==false
傳入值為:
isset()==false
empty()==true
self==false
is_null()==true
傳入值為:
empty()==true
self==false
傳入值為:Array
empty()==true
self==false
總結一:從結果中可以看出,“”、0、“0”、NULL、FALSE、array()這幾個中,empty()和“變數本身作為引數”結果一致,均作為“空”來處理,而isset()和is_null ()僅當是null時,才作為“空”來處理(值得注意的是false並不會被認為是空)
下面我們看下當一個變數未定義初始化時,這些函式返回的是什麼
echo `<br>傳入值為:undefine<br>`;
if (!isset($value_undefine)) {
echo `isset()==false<br>`;
}
if (empty($value_undefine)) {
echo `empty()==true<br>`;
}
if (!$value_undefine) {
echo `self==false<br>`;
}
if (is_null($value_undefine)) {
echo `is_null()==true<br>`;
}
輸出結果:
傳入值為:undefine
isset()==false
empty()==true
(此處警告變數未定義)
self==false
(此處警告變數未定義)
is_null()==true
總結二:由結果可看出,當變數未定義時,is_null()和“本身引數”是不允許作為引數判斷的,雖然結果可以判斷出來為“空”,建議不使用。
isset()和empty()可以正常判斷出為”空”的.
1
2
3
4
5
6
7
8
9
|
最後總結: isset(),僅當null和未定義,返回false empty (), "" 、0、 "0" 、NULL、FALSE、 array (),未定義,均返回false
本身作為引數,與 empty ()一致,但接受未定義變數時,報警告
is_null (),僅判斷是否為null,未定義報警告
|
http://www.cnblogs.com/huangzhen/archive/2011/08/21/2147808.html#3303118
相關文章
- PHP isset()與empty()的使用區別詳解PHP
- PHP 由 empty 和 isset 面試題引起的思考PHP面試題
- python中if條件語句對於布林值和非布林值的判斷結果Python
- javascript中如何判斷變數的型別?JavaScript變數型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- 如何判斷變數型別變數型別
- python 判斷一個表示式是什麼布林型別bool()Python型別
- php判斷變數是不是null的方法PHP變數Null
- 面試題:布林變數面試題變數
- python 中如何判斷獲取檢視變數的型別Python變數型別
- JavaScript判斷變數型別的四種方法JavaScript變數型別
- 如何判斷JavaScript中的兩變數是否相等?JavaScript變數
- PHP 中的 -> 和 :: 的區別PHP
- linux 中如何判斷變數是否為數值Linux變數
- 變數,運算子,if判斷變數
- TypeScript 布林型別TypeScript型別
- PbootCMS奇偶數判斷(隔行變色)各種條件判斷和標籤boot
- Spark 外部變數和BroadCast變數的區別Spark變數AST
- jquery中dom節點操作方法empty和remove的區別jQueryREM
- 判斷javaScript變數是Ojbect型別還是Array型別JavaScript變數型別
- 05 Windows批處理中的字串和布林資料型別Windows字串資料型別
- js函式中的if判斷和a==b判斷JS函式
- 把一個任意型別的值轉換為布林型別型別
- js中的型別判斷JS型別
- js--typeof 和 instanceof 判斷資料型別的區別及開發中的使用JS資料型別
- Python中類變數、成員變數、區域性變數的區別Python變數
- php中TCP和UDP的區別PHPTCPUDP
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 【冰山白皮書】JS中的布林 數字 字串JS字串
- 變數轉化為判斷條件時的各種情況變數
- Kotlin 資料型別詳解:數字、字元、布林值與型別轉換指南Kotlin資料型別字元
- linux中條件變數和訊號量的區別!Linux變數
- 「趣圖」布林值轉成string,然後判斷等於 true,這麼寫程式碼不怕被開除?
- 深入理解 JavaScript 中的型別和型別判斷問題JavaScript型別
- java中判斷String型別為空和null的方法Java型別Null
- C語言中迴圈語句while 中判斷條件出現 || 和 && 的區別C語言While
- 02 . Shell變數和邏輯判斷及迴圈使用變數
- C#快速入門教程(10)——布林型別與布林運算C#型別
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數