PHP:变量空或未设置或什么?

时间:2009-12-08 20:01:27

标签: php variables conditional

这四个PHP语句之间有什么区别?

if (isset($data)) {

if (!empty($data)) {

if ($data != '') {

if ($data) {

他们都这样做吗?

4 个答案:

答案 0 :(得分:22)

检查PHP手册:http://www.php.net/manual/en/types.comparisons.php

Expression  gettype() empty() is_null() isset() if($x)
$x = "";        string  TRUE    FALSE   TRUE    FALSE
$x = null;      NULL    TRUE    TRUE    FALSE   FALSE
var $x;         NULL    TRUE    TRUE    FALSE   FALSE
$x undefined    NULL    TRUE    TRUE    FALSE   FALSE
$x = array();   array   TRUE    FALSE   TRUE    FALSE
$x = false;     boolean TRUE    FALSE   TRUE    FALSE
$x = true;      boolean FALSE   FALSE   TRUE    TRUE
$x = 1;         integer FALSE   FALSE   TRUE    TRUE
$x = 42;        integer FALSE   FALSE   TRUE    TRUE
$x = 0;         integer TRUE    FALSE   TRUE    FALSE
$x = -1;        integer FALSE   FALSE   TRUE    TRUE
$x = "1";       string  FALSE   FALSE   TRUE    TRUE
$x = "0";       string  TRUE    FALSE   TRUE    FALSE
$x = "-1";      string  FALSE   FALSE   TRUE    TRUE
$x = "php";     string  FALSE   FALSE   TRUE    TRUE
$x = "true";    string  FALSE   FALSE   TRUE    TRUE
$x = "false";   string  FALSE   FALSE   TRUE    TRUE

如您所见,if(!empty($x))等于if($x)if(!is_null($x))等于if(isset($x))。就$data != ''而言,如果TRUE不是$dataNULL''FALSE,则为0松散的比较)。

答案 1 :(得分:9)

if (isset($data)) {  

变量刚刚设置 - 在该行之前我们声明了名为'data'的新变量,即   $ data ='abc';

if (!empty($data)) {  

变量充满了数据。它不能有空数组,因为$data有数组类型但仍然没有数据,即$ data = array(1); 不能为空,空字符串,空数组,空对象,0等

if ($data != '') {  

变量不是空字符串。但也不能是空值(例子如上) 如果我们想要比较类型,请使用!=====

if ($data) {  

变量用任何数据填写。与!empty($data)相同。

答案 2 :(得分:4)

它们不一样。

  1. 如果设置了变量,则为true。变量可以设置为空白,这是真的。

  2. 如果变量设置为不等于空字符串,0,'0',NULL,FALSE,空数组,则为true。它显然与isset不一样。

  3. 如果变量不等于空字符串,如果变量未设置为空字符串。

  4. 如果变量强制为true,如果变量未设置,则强制为false。

答案 3 :(得分:0)

if(isset($ data)) - 确定是否设置了变量(未下注'unset()'且不是NULL

if(!empty($ data)) - 如果$ data为'',0,false或NULL,则类型不可知检查为空,它将返回true。

if($ data!=''){这是一个字符串类型,可以检查$ data是否等于空字符串

if($ data){this is a true or false(aka:0 or 1)