empty与isset在php中一个是为空,另一个判断是是否为一个存在的变量了,下面小编来给各位同学介绍php中empty与isset区别,欢迎各位同学进入参考。

empty是判断变量值是非空或非零的值。对应空定义包括:""(空字符串)、0、"0"、NULL、FALSE、array()和$var(只声明但未赋值)。也就是说当变量值为上述这些,empty返回TRUE,其他的都返回FALSE。

isset是检测变量是否设置,并且不是 NULL。变量设置可以从几个方面来说。1:最简单的就是变量是否先声明和赋值;2:array中是否存在对应的index或key;3:object中是否存在对应的属性。

从上面的两个function定义可以看到,在某些情况下,两者可以公用,但其区别还是很大的。另外它们都只能检测变量,检测任何非变量的东西都将导致解析错误。例如直接检查另一个function的返回值(empty(otherFunction())),你将看到"Fatal error: Can’t use function return value in write context in"这样的错误。

另外isset可以一次检查多个变量,例如:isset($var1, $var2, $var3),当这三个值分别的isset都为TRUE结果为TRUE,否则结果为FALSE。

测试代码:$sep = "
";

echo 'test undeclared var empty : ';

var_dump(empty($var)); // TRUE

echo $sep . 'test undeclared var isset : ';

var_dump(isset($var)); // FALSE

$var;

echo $sep . 'test declared var but no set value empty : ';

var_dump(empty($var)); // TRUE

echo $sep . 'test declared var but no set value isset : ';

var_dump(isset($var)); // FALSE, 变量申明未赋值,默认值为NULL

$var = NULL;

echo $sep . 'test declared var and set value NULL empty : ';

var_dump(empty($var)); // TRUE

echo $sep . 'test declared var and set value NULL isset : ';

var_dump(isset($var)); // FALSE, 变量申明赋值为NULL

$var1 = ''; $var2 = '0'; $var3 = 0; $var4 = FALSE; $var5 = array();

echo $sep . 'test '' empty : ';

var_dump(empty($var1)); // TRUE

echo $sep . 'test '0' empty : ';

var_dump(empty($var2)); // TRUE

echo $sep . 'test 0 empty : ';

var_dump(empty($var3)); // TRUE

echo $sep . 'test FALSE empty : ';

var_dump(empty($var4)); // TRUE

echo $sep . 'test array() empty : ';

var_dump(empty($var5)); // TRUE

echo $sep . 'test '', '0', 0, FALSE, array() isset : ';

var_dump(isset($var1, $var2, $var3, $var4, $var5)); // TRUE,  变量申明并赋值为空字符串

输出的结果为:test undeclared var empty : bool(true)

test undeclared var isset : bool(false)

test declared var but no set value empty : bool(true)

test declared var but no set value isset : bool(false)

test declared var and set value NULL empty : bool(true)

test declared var and set value NULL isset : bool(false)

test '' empty : bool(true)

test '0' empty : bool(true)

test 0 empty : bool(true)

test FALSE empty : bool(true)

test array() empty : bool(true)

test '', '0', 0, FALSE, array() isset : bool(true)

比如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty() 认为没有配置,isset() 能够取得 $id 的值:$id=0;

empty($id)?print "It's empty .":print "It's $id .";

//结果:It's empty .

print "
";

!isset($id)?print "It's empty .":print "It's $id .";

//结果:It's 0 .

这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些。

当一个php页面的 URL 尾部参数出现 id=0 时(比如:test.php?id=0),试比较:if(empty($id)) $id=1; - 若 id=0 ,id 也会为1

if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1

可分开运行以下代码检测上述推断:if(empty($id)) $id=1;

print $id; // 得到 1

if(!isset($id)) $id=1;

print $id; //得到 0

随意转载^^但请附上教程地址。

php中empty与isset的区别,再谈php中empty与isset区别详解相关推荐

  1. Unity教程之再谈Unity中的优化技术

    这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的" ...

  2. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  3. android 6.0 存储卡,Android 6.0区别U盘和SD卡设备的方法详解

    如下所示: public static boolean isSdcardExists(Context context) { StorageManager storageManager = Storag ...

  4. 再谈机器学习中的归一化方法(Normalization Method)

    机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...

  5. 如何从Spring官网中下载完整的jar包(包含5.2.9版本最新版详解,当然所有版本均可下载)

    快速找到流程 网址: 点击进入Spring官方下载地址 点击进入后应该是 如下图 所示: 然后点击图示中的Spring 点开后 就是 如下图所示,选择 要下载的版本,右键 download. 详解 从 ...

  6. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  7. 计算机中的光学知识,科学网—光学基础知识大讲堂 ——第3期:详解电磁辐射 - 何卓铭的博文...

    光学基础知识大讲堂 --第3期:详解电磁辐射 何卓铭 电磁辐射作为一种看不见.摸不着的场,是电磁波能量传递的一种方式.而我们生活着的地球环境中,便充斥着大量的电磁辐射,不过不用害怕,只有当电磁辐射达到 ...

  8. mysql中find_in_set()函数的使用和排序,且与in(),like()的比较详解

    MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以","分隔 如 (1 ...

  9. Linux中的软件管理(一)配置本地yum源及yum命令详解

    文章目录 yum源头是什么 yum源的分类 如何配置本地yum源指向 yum命令 yum命令使用的前提 yum命令的详细用法 软件安装包名称详解 yum源头是什么 yum源是一个软件集合地,只需要搜索 ...

最新文章

  1. 探索JAVA并发 - 并发容器全家福!
  2. RedHat Enterprise Linux 5下配置Apache+Mysql+Php
  3. java抽象工厂模式_Java 抽象工厂模式
  4. mysql字符串逆时针旋转180度_mysql 函数示例(转)
  5. http协议与php关系,PHP中的HTTP协议
  6. 元素(洛谷-P4570)
  7. Python内置函数sorted()高级排序用法
  8. centos 基础命令第一节
  9. 物流车辆调度算法matlab,基于遗传算法的预拌混凝土车辆调度优化MATLAB源码
  10. STM32—建立工程模板
  11. 【一起学数据结构与算法分析】第二篇:字谜游戏
  12. 懒人库ButterKnife的应用
  13. 螃蟹保存方法保存时间_活螃蟹如何保存才能活得时间久(这几个方法简单实用)...
  14. 一个前端程序员的日常
  15. Pipeline流水线项目构建
  16. stm32f103VCT6全新机器 做stm32开发板 原理图以及主要器件规格书
  17. sa387gr11cl2是什么材料,sa387gr11cl2美标钢板性能介绍
  18. Arduino ESP32 SD卡读写实例
  19. matlab floor函数_MATLAB图像处理:08:在交通视频中检测汽车
  20. 魅族u20怎么刷Android,魅族魅蓝U20怎么刷机

热门文章

  1. cannot resolve class xxx
  2. 光电通TOEC OEP810 打印机驱动
  3. html 混淆压缩,前端代码的精简、混淆、压缩和编译
  4. 我的青春是天书奇谈折扣端(4.7折)新追忆开始大刀已经饥渴难耐
  5. 【WPS表格】常见的错误值/出错原因与解决方法
  6. elementUI中分页器的使用
  7. 常见浏览器与浏览器内核之间的关系
  8. 使用JavaScript控制HTML元素的显示和隐藏
  9. “中央处理器(CPU)”学习提纲
  10. 如何使用UDP协议给飞秋发送消息