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 条评论
登录 后参与评论

相关文章

来自专栏武军超python专栏

2018年7月23日数据存储到文件中的代码介绍:

******************************************************************

945
来自专栏加米谷大数据

MongoDB 概念解析

不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍 下表将帮助您更容易理解Mongo中的一些概念...

34911
来自专栏salesforce零基础学习

salesforce lightning零基础学习(八) Aura Js 浅谈一: Component篇

我们在开发lightning的时候,常常会在controller.js中写 component.get('v.label'), component.set('v...

1042
来自专栏开源优测

[接口测试_B] 14 pytest+requests实战-参数化

上一篇在一个py文件中,写了一堆test_开头的方法,所有数据和用例都在一个py文件中,本篇尝试读取json文件的测试数据,执行用例。

1454
来自专栏angularejs学习篇

angularjs学习第六天笔记(指令简介学习)

  您好,由于周末有事情,没哟学习angularjs,几天晚上开始继续学习angularjs,坚持加油每一天。谢谢

1002
来自专栏mwangblog

python模块

1333
来自专栏不想当开发的产品不是好测试

生成唯一标识 字符串跟时间戳的结合

生成唯一标识 期望得到是一个时间戳跟字符串的组合, 采用 //这种是秒级的时间戳 Date date = new Date(); String.format...

2717
来自专栏流媒体人生

linux eval

eval 就是执行以下两个步骤 1.第一次,执行变量替换,类似与C语言的宏替代

842
来自专栏顶级程序员

你真的了解 volatile 关键字吗?

作者:Ruheng, www.jianshu.com/p/7798161d7472 一、Java内存模型 想要理解volatile为什么能确保可见性,就要先理...

3377
来自专栏大内老A

WCF服务端运行时架构体系详解[续篇]

终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行。如果从服务描述的角度来看,操作是一个OperationDescription对象。而服...

1876

扫码关注云+社区