PHP开发过程的那些坑(二) ——PHP empty函数
时间:2022-05-03
本文章向大家介绍PHP开发过程的那些坑(二) ——PHP empty函数,主要内容包括相关阅读:、PHP开发过程的那些坑(一) ——对象拷贝、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
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开发过程的那些坑(一) ——对象拷贝
- 系统架构 | 基于微服务架构,改造企业核心系统之实践
- 《Redis设计与实现》读书笔记(五) ——Redis中的整数集合
- 《Redis设计与实现》读书笔记(七) ——Redis对象综述及字符串对象实现原理
- 自动登录脚本
- 极致之处,精彩无限 - 优化了一半的SQL
- 编程修炼 | Scala中Stream的应用场景及其实现原理
- Linux之内存描述符mm_struct
- 大数据 | Spark的现状与未来发展
- 信号量、互斥锁、自旋锁、原子操作
- 理解OAuth 2.0
- node.js应用Redis数据库
- apache服务器配置
- udev实现热插拔
- 《Redis设计与实现》读书笔记(九) ——Redis集合和有序集合实现原理
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android实现记住密码功能
- 【- Flutter Web篇 -】 FlutterUnit web版闪亮登场
- Android简单实现弹幕效果
- 实现 Base64 的编码解码
- Android实现底部导航栏的主界面
- Spring注解@Autowired源码分析
- 使用RecyclerView实现水平列表
- android实现记住用户名和密码以及自动登录
- Android碎片fragment实现静态加载的实例代码
- android异步消息机制 源码层面彻底解析(1)
- /undefinedcss/modules/layer/default/layer.css?v=3.1.1找不到的问题
- Android实现渐变启动页和带有指示器的引导页
- the input device is not a TTY. If you are using mintty, try prefixing the comma
- 【STM32F407】第13章 RL-TCPnet V7.X之创建多个TCP客户端
- RecyclerView实现列表倒计时