PHP开发过程的那些坑(二) ——PHP empty函数

PHP开发过程的那些坑(二)——PHP empty函数

(原创内容,转载请注明来源,谢谢)

坑:

在工作过程中,常用empty()函数判断数组是否为空,为空时返回true,不是为空时返回false

但是,某次写代码,用到array_diff($array1, $array2)函数,该函数会判断两个数组是否相等,如果相等是返回空数组。

因此,我就很自然的想到,使用if(empty(array_diff($array1,$array2)))来判断两个数组是否一致,结果就悲剧了,一直报错。

经过不断的设断点、error_log()log,发现把array_diff挪到外面就可以正常使用。经过查资料,才发现empty函数确实是不允许嵌套函数。

分析:

查看PHP官方手册,http://php.net/manual/zh/function.empty.php,发现里面有这么一段话:“在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误”。在更新日志中,发现“PHP5.5.0 empty() 现在支持表达式了,而不仅仅是变量。”

因此,说明在PHP5.5或者更高的版本,是可以支持empty()里面传其他内容的,但是如果使用PHP5.5之前的版本,还是先定义一个变量,再把这变量传进empty

改进措施:

1、新定义一个变量,就上述例子:

         $tmpArray = array_diff($array1, $array2);
         if(empty($tmpArray))

2、针对trim函数,官方文档提供了一个解决方案:

如果要实现empty(trim($name)),可以使用trim($name)== false.

——written by linhxx 2017.07.08

相关阅读:

PHP开发过程的那些坑(一) ——对象拷贝

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

oracle系列--第六篇 Oracle上面小试牛刀

现在我们可以在oracle上面进行创建表,向表中插入数据,修改表中数据,删除数据,甚至删除表等一系列操作。

673
来自专栏性能与架构

MongoDB 多对多关系的简单示例

例如文章的标签,一篇文章可能包含多个标签,一个标签也会对应多篇文章 这是一个多对多的映射关系,在sql中我们一般这样设计 Article: Id ...

3097
来自专栏阿杜的世界

Java Web技术经验总结(十四)

这个语句如果只是查询前面几页,或者是表的数据量不大(小于10万),就没有问题,否则就会出现慢查询。参考文章:【MySQL】 性能优化之 延迟关联进行了优化。

471
来自专栏zcqshine's blog

PHP函数uasort()在类中的使用问题解决

3359
来自专栏追不上乌龟的兔子

Python3.7的新API:asyncio.run()

Python3.7的正式版本已经发布有一段时间了,出了内置的breakpoint()断点函数,颇受争议的dataclass,自定义模块里的__getattr__...

1646
来自专栏GreenLeaves

C# 非托管资源的释放

1、C#垃圾回收器的出现意味着,程序猿们不再需要担心不再需要的对象,只要让这些对象的所有引用都超出作用域,并允许垃圾回收器,在需要时释放内存即可,但是垃圾回收器...

1675
来自专栏desperate633

浅谈数据库查询优化的几种思路

应尽量避免全表扫描,首先应考虑在 where 及 order by ,group by 涉及的列上建立索引

731
来自专栏TechBox

【iOS】运行时消息传递与转发机制前言(一)对象的消息传递机制 objc_msgSend()(二)消息转发流程参考文章

1064
来自专栏指尖下的Android

JNI之路径初探---2

上一篇博客写的是Java调用C、C++的例子,本篇就演示一下C、C++怎么调用Java的属性和方法。

622
来自专栏漏斗社区

代码审计| 从今天起,做一个精致的多米咖!

0x00 背景 在看CNVD漏洞库的时候发现有师傅发了某cms前台SQL注入漏洞,通过查阅漏洞描述可知道存在问题的参数是cardpwd,便开始尝试对该版本的c...

3328

扫描关注云+社区