php使用empty()函數要注意事項

來源:互聯網
上載者:User

從表面上看,很容易誤解empty()函數是判斷字串是否為空白的函數,其實並不是,我也因此吃了很多虧。

empty()函數是用來測試變數是否已經配置。若變數已存在、非Null 字元串或者非零,則返回 false 值;反之返回 true值。所以,當字串的值為0時,也返回true,就是執行empty內部的語句。這就是陷阱。

 代碼如下 複製代碼

$a=array("1"=>"ddf");
var_dump(empty($a));///boolean false
$b=0;
var_dump(empty($b));  ///boolean true

勸告各位,千萬注意使用empty()函數。

判斷字串是否為空白,可以這麼判斷: if ($value=="") ...
    * 格式:bool empty ( mixed var )
    * 功能:檢查一個變數是否為空白
    * 傳回值:
    * 若變數不存在則返回 TRUE
    * 若變數存在且其值為""、0、"0"、NULL、、FALSE、 array()、var $var; 以及沒有任何屬性的對象,則返回 TURE
    * 若變數存在且值不為""、0、"0"、NULL、、FALSE、 array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE
    * 版本:PHP 3, PHP 4, PHP 5

從表面上看,很容易誤解empty()函數是判斷字串是否為空白的函數,其實並不是,我也因此吃了很多虧。 empty()函數是用來測試變數是否已經配置。若變數已存在、非Null 字元串或者非零,則返回 false 值;反之返回 true值。所以,當字串的值為0時,也返回true,就是執行empty內部的語句。這就是陷阱。如: 假設 $value = 0; 則empty($value)=false。勸告各位,千萬注意使用empty()函數。判斷字串是否為空白,可以這麼判斷: if ($value=="") ... 格式:bool empty ( mixed var ) 功能:檢查一個變數是否為空白 傳回值:若變數不存在則返回 TRUE 若變數存在且其值為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE 若變數存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE 版本:PHP 3, PHP 4, PHP 5


當你使用empty檢查一個函數返回的結果時會報錯:Fatal error: Can't use function return value in write context

例如:

 代碼如下 複製代碼

<?php
echo empty(strlen('be-evil.org'));

到PHP手冊裡面查看,在empty函數描述的地方有以下文字:

Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

empty() 只檢測變數,檢測任何非變數的東西都將導致解析錯誤!

因此,我們不能拿empty來直接檢測函數返回的值,上面例子的解決方案如下:

 代碼如下 複製代碼

<?php

$length = strlen('be-evil.org');

echo empty($length);
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.