php中empty与isset的区别,再谈php中empty与isset区别详解
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区别详解相关推荐
- Unity教程之再谈Unity中的优化技术
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的" ...
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- android 6.0 存储卡,Android 6.0区别U盘和SD卡设备的方法详解
如下所示: public static boolean isSdcardExists(Context context) { StorageManager storageManager = Storag ...
- 再谈机器学习中的归一化方法(Normalization Method)
机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...
- 如何从Spring官网中下载完整的jar包(包含5.2.9版本最新版详解,当然所有版本均可下载)
快速找到流程 网址: 点击进入Spring官方下载地址 点击进入后应该是 如下图 所示: 然后点击图示中的Spring 点开后 就是 如下图所示,选择 要下载的版本,右键 download. 详解 从 ...
- 中yeti不能加载_第二十章_类的加载过程详解
类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...
- 计算机中的光学知识,科学网—光学基础知识大讲堂 ——第3期:详解电磁辐射 - 何卓铭的博文...
光学基础知识大讲堂 --第3期:详解电磁辐射 何卓铭 电磁辐射作为一种看不见.摸不着的场,是电磁波能量传递的一种方式.而我们生活着的地球环境中,便充斥着大量的电磁辐射,不过不用害怕,只有当电磁辐射达到 ...
- mysql中find_in_set()函数的使用和排序,且与in(),like()的比较详解
MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以","分隔 如 (1 ...
- Linux中的软件管理(一)配置本地yum源及yum命令详解
文章目录 yum源头是什么 yum源的分类 如何配置本地yum源指向 yum命令 yum命令使用的前提 yum命令的详细用法 软件安装包名称详解 yum源头是什么 yum源是一个软件集合地,只需要搜索 ...
最新文章
- 探索JAVA并发 - 并发容器全家福!
- RedHat Enterprise Linux 5下配置Apache+Mysql+Php
- java抽象工厂模式_Java 抽象工厂模式
- mysql字符串逆时针旋转180度_mysql 函数示例(转)
- http协议与php关系,PHP中的HTTP协议
- 元素(洛谷-P4570)
- Python内置函数sorted()高级排序用法
- centos 基础命令第一节
- 物流车辆调度算法matlab,基于遗传算法的预拌混凝土车辆调度优化MATLAB源码
- STM32—建立工程模板
- 【一起学数据结构与算法分析】第二篇:字谜游戏
- 懒人库ButterKnife的应用
- 螃蟹保存方法保存时间_活螃蟹如何保存才能活得时间久(这几个方法简单实用)...
- 一个前端程序员的日常
- Pipeline流水线项目构建
- stm32f103VCT6全新机器 做stm32开发板 原理图以及主要器件规格书
- sa387gr11cl2是什么材料,sa387gr11cl2美标钢板性能介绍
- Arduino ESP32 SD卡读写实例
- matlab floor函数_MATLAB图像处理:08:在交通视频中检测汽车
- 魅族u20怎么刷Android,魅族魅蓝U20怎么刷机