isset () 和 empty () 的区别

isset() 和 empty() 的区别

很多人只想着高深的技术,却连基础知识储备都不过关!一个简单的问题都能被问的发怵,简直可笑!对!说的就是我自己!接下来会一直坚持做一些简单的知识总结。

1、isset() 的定义

==检测变量是否已设置并且非 NULL==

<?php

$var = '';

// 结果为 TRUE,所以后边的文本将被打印出来。
if (isset($var)) {
    echo "This var is set so I will print.";
}

// 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
// the return value of isset().

$a = "test";
$b = "anothertest";

var_dump(isset($a));      // TRUE
var_dump(isset($a, $b)); // TRUE

unset ($a);

var_dump(isset($a));     // FALSE
var_dump(isset($a, $b)); // FALSE

$foo = NULL;
var_dump(isset($foo));   // FALSE

?>

结果

This var is set so I will print.bool(true)
bool(true)
bool(false)
bool(false)
bool(false)

2、empty() 的定义

==检查一个变量是否为空==

以下的东西被认为是空的:

  • "" (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了,但是没有值的变量)

3、isset() 和 empty()的比较

$var = 0;
if (empty($var)) {
    echo 1;
}//1
if (isset($var)) {
    echo 2;
}//1

4、 0、‘’、null之间相等关系

if('' == null && '' == 0 && null ==  0 && 0 =='0') 
echo true;
//返回结果  1;

if('' == '0' || null == '0' ) 
echo true;
//返回结果 untitled;

结论:==' ' ,null , 0 ,'0'互相相等;'',null不等于'0'==

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 6

那么问题来了 . 通过 url 中获取参数. $_GET['param'] 应该用 isset() 还是 empty() 呢?

5年前 评论
Egfly

@Ali

file

我一般是empty() :joy:

5年前 评论

@Egfly 是的,如果使用 isset 的话,只能判断为存在不存在,如果是请求接口,那 不判断为空的话,查询的 SQL 语句及可能是 where id = '' 的语句.

5年前 评论

那么问题来了这几个函数有什么用 你们在项目中有用到吗 你是喜欢在项目用中blank和filled还是要用empty等去判断非空

5年前 评论
Code_Er

我用php5.5 $parm = !empty($_GET['parm']) ?: $_GET['parm'] : ''; 这样是会报错的 只能使用isset

5年前 评论
lmaster

我认为重点 isset官方说明

file

isset 的执行效率更高,并且在判断 class 时有可自定义(class 魔术放法 __isset())
所以在框架中常见用 isset 做判断

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!