phpempty使用技巧,让你的代码更简洁高效!

吉云

今天遇到一个坑,搞得我头都大,分享一下我是怎么解决的,也想跟大家伙儿说道说道,避免以后踩同样的坑。

事情是这样的,我最近在写一段 PHP 代码,主要就是想判断一个变量是不是空的,然后根据情况做一些后续处理。这不挺常见的需求嘛我就想到用 empty() 这个函数,毕竟这个函数就是干这个的,对?

我写个测试,大概长这样:

phpempty使用技巧,让你的代码更简洁高效!

  • 第一个变量,我直接赋值成 null。

  • 第二个变量,赋值成数字 0。

当时我认为,变量是空的就显示变量为空,变量不是空的时候,就显示变量不为空,我觉得这么写看起来清晰明,应该没啥问题。

结果?程序跑起来,我傻眼。我设置好几个变量,有的是 0,有的是 ""(空字符串),还有的是 array()(空数组),甚至还有个 null。按照我的预期,这些都应该被判定为空!结果 empty() 函数这家伙,竟然告诉我它们不都是空的!

phpempty使用技巧,让你的代码更简洁高效!

当时我就急,这到底怎么回事?我这代码看起来没毛病!我开始疯狂地搜索,什么“PHP empty 函数详解”、“PHP empty 函数的坑”之类的,搜一大堆。看不少文章,总算明白问题出在哪儿。

原来,empty() 函数判断变量为空,不仅仅是看它是不是 null,它还会把 0、""、array() 这些都当成空!这下子,我算是彻底明白。我之前就是栽在这个地方!

为解决这个问题,我就仔细看看我找到的资料,还真找到一个办法,就是用 isset() 函数。isset() 函数跟 empty() 不一样,它只判断变量是不是被设置,不管变量的值是也就是说,只要一个变量被定义,哪怕它的值是 0 或者 "",isset() 都认为是“非空”的。

于是我把代码改成用 isset() 来判断。这下子,程序跑起来就正常!我想要的结果终于出来!

总结一下这回的经历,真的是吃一堑长一智!以后再用 empty() 函数的时候,可得小心,别再被这个坑给绊倒。特别是当你的变量有可能出现数字0的时候,用 isset() 来判断会更

我想说,咱们写代码的时候,还是得多留个心眼,不能光看表面,得多想想底层是怎么实现的。这回的经历也算是给我提个醒,以后得多加注意!

phpempty使用技巧,让你的代码更简洁高效!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]