首页 php教程 php手册 php empty()和isset()的区别

php empty()和isset()的区别

Jun 06, 2016 pm 07:54 PM
empty isset php 使用 区别 编写

在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。 顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一

在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。

顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生一些意外。原来,empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别empty还会检测变量是否为空、为零。当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置。

比如检测 $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

 


  要说它们的联系,其共同点就是empty()和isset()都是变量处理函数,作用是判断变量是否已经配置,正是由于它们在处理变量过程中有很大的相似性,才导致对它们的关系认识不足。单从empty()和isset()这两个函数本身来考虑的话会把人弄得更糊涂,换一个角度来它。empty()和isset()的处理对象无外乎未定义变量0空字符串。
如果变量为0,则empty()会返回TRUE,isset()会返回TRUE;

如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE;

如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE;

手册中对empty()的解释如下:
描述bool empty( mixed var )
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULLFALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE
手册中对isset()的解释如下:
isset()检测变量是否设置
描述bool isset ( mixed var [, mixed var [, ...]] )
如果 var 存在则返回 TRUE,否则返回 FALSE
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。
当要 判断一个变量是否已经声明的时候 可以使用 isset 函数
当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数
当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

http://hi.baidu.com/bingher2008/blog/item/bf5f71dee5c9354394ee3708.html

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Nexo是什么交易所?Nexo交易所安全吗? Nexo是什么交易所?Nexo交易所安全吗? Mar 05, 2025 pm 07:39 PM

Nexo:不止是加密货币交易所,更是您的数字金融管家Nexo并非传统的加密货币交易所,而是更侧重于加密货币借贷的金融平台。它允许用户以加密货币为抵押获得贷款,并提供赚取利息的服务。虽然Nexo也提供加密货币买卖和兑换功能,但其核心业务是加密借贷。本文将深入探讨Nexo的运作模式及安全性,为投资者提供更全面的了解。Nexo的运作模式成立于2018年,总部位于瑞士楚格的Nexo,是数字金融领域的先驱。它区别于其他中心化交易所,更专注于提供全面的金融服务。用户无需出售资产即可进行加密货币的买卖、交易和

以太币和比特币的区别 以太币和比特币区别是什么 以太币和比特币的区别 以太币和比特币区别是什么 Mar 19, 2025 pm 04:54 PM

以太币与比特币区别显着。技术上,比特币用 PoW,以太币从 PoW 转向 PoS 。交易速度比特币慢,以太币快。应用场景里,比特币侧重支付存储,以太币支撑智能合约与 DApp 。发行上,比特币总量 2100 万枚,以太币无固定总量。安全方面各有挑战。市场价值上,比特币市值居首,两者价格波动都大,但因特性不同,以太币价格走势有独特之处 。

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

豆包和deepseek有什么区别 豆包和deepseek有什么区别 Mar 12, 2025 pm 01:24 PM

豆包和DeepSeek的核心区别在于检索精度和复杂度。1. 豆包基于关键词匹配,简单直接,成本低,但精度低,仅适用于结构化数据;2. DeepSeek基于深度学习,能理解语义,精度高,但成本高,适用于非结构化数据。最终选择取决于应用场景和资源限制,精度要求不高则选豆包,追求高精度则选DeepSeek。

加密投资心态很重要!如何避免不必要担忧,做出正确决策? 加密投资心态很重要!如何避免不必要担忧,做出正确决策? Mar 05, 2025 pm 07:24 PM

加密投资的恐惧、不确定性和怀疑:如何做出明智决策?许多加密投资者面临着“这是最后一个周期”的恐惧,以及对牛市持续时间的担忧,再加上来自他人的压力,这些因素共同导致了糟糕的投资决策。本文将探讨如何克服这些挑战,做出更明智的投资选择。潜在风险:注意力分散:盲目追逐热点,忽略核心资产的价值。悲观与犹豫:不确定性导致缺乏信心,无法长期持有,甚至退出市场。缺乏信念:对项目缺乏深入研究,无法应对市场波动。缺乏获利策略:因恐惧回调而提前清仓,错失潜在收益。应对策略:1.专注核心领域:

欧易okex开盘收盘时间详细介绍 欧易okex开盘收盘时间详细介绍 Mar 18, 2025 pm 01:06 PM

欧易OKEx数字资产交易平台区别于传统证券市场,24小时全天候开放交易,用户可随时进行法币交易、币币交易和合约交易等。 但平台会在系统维护升级或特殊市场事件(如极端行情导致市场剧烈波动)等情况下,提前公告并临时调整交易时间或规则,例如暂停交易或修改合约交易开仓规则等。因此,建议用户密切关注平台公告和市场动态,把握交易时机并做好风险管理。 了解欧易OKEx交易时间及规则调整,才能在数字货币市场中游刃有余。

豆包和deepseek的区别 豆包和deepseek的区别 Mar 12, 2025 pm 01:57 PM

豆包和DeepSeek的主要区别在于:1. 豆包是关键词搜索引擎,依赖关键词匹配;DeepSeek是语义搜索引擎,理解搜索请求的语义。2. 豆包数据来源广泛但质量参差不齐,DeepSeek数据更权威但覆盖范围可能较窄。3. 豆包结果以列表形式呈现,DeepSeek可能提供更丰富的答案和上下文信息。4. 豆包易于使用,DeepSeek可能需要更复杂的查询语句。因此,豆包适合快速查找信息,DeepSeek适合深入语义搜索和信息挖掘,选择取决于具体需求。

比特币一共有多少枚 比特币一共有多少枚 Mar 17, 2025 pm 04:54 PM

比特币总量恒定为2100万枚,这一由中本聪代码设定的事实,赋予了比特币独特的价值属性。与无限增发的法币不同,比特币的稀缺性使其具备抗通胀潜力,并类似于黄金等贵金属。 其发行机制通过“挖矿”逐步释放,并每四年减半奖励,预计2140年左右达到总量上限。 虽然实际流通量小于总量,但2100万枚的总量上限是比特币的核心价值支撑,也使其成为备受关注的数字资产。 了解比特币总量限制,对投资者做出理性决策至关重要。

See all articles