当前位置: 首页 > news >正文

PHP is_array()函数详解,PHP判断是否为数组

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

is_array

  • 一、基本使用
  • 二、空数组
  • 三、同时判断多个数组
  • 四、empty()和is_array()的区别?

is_array() 可以「检测」变量是不是「数组」类型。

语法

bool is_array( $var )

参数

  • $var :需要检测的变量

返回值

返回布尔类型。

  • true :是数组
  • false :不是数组

一、基本使用

传入一个变量「判断」它是不是「数组」,这也是最常用的一种方式。

数组有很多创建方式,直接传一个数组也可以。

注意: is_array() 函数只能判断「普通数组」,不能判断关联数组或多维数组。

实例:

$arr = array(1,2,3);var_dump(is_array($arr));
var_dump(is_array(array(1,2,3)));
var_dump(is_array([1,2,3]));

输出:

bool(true)
bool(true)
bool(true)

二、空数组

is_array() 只关心变量的「类型」,而不关心里面的「值」;即使里面没有值,也会返回true。

注意:即使一个对象实现了数组接口时(ArrayAccess接口),也会返回false,因为对象的类型不是array。

实例:

$arr = array();var_dump(is_array($arr));

输出:

bool(true)

三、同时判断多个数组

is_array() 一次只能判断「一个」变量,如果传入多个变量,会报Warning,并且执行结果也不正确。

实例:

$arr = array(1);var_dump(is_array($arr, $arr));

输出:

Warning: is_array() expects exactly 1 parameter,
bool(false)

四、empty()和is_array()的区别?

问题场景:先 empty() 判断是否为空,再 is_array() 判断是不是数组; empty() 是否可以省略。

if(is_array($input) && !empty($input)){// 功能
}

is_array() 是内置函数,底层调用 php_is_type 获取变量的类型是不是数组。

PHP_FUNCTION(is_array)
{php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY);
}

这意味着,它只是简单的判断变量「类型」,而不会判断是否为「空」,这也解释了,为什么 is_array() 判断空数组也会返回true。这时候再用 empty() 判断是否为空,是很有必要的。

需要注意的是 empty() 是语法结构,而 is_array() 是函数,语法结构的函数的「开销」要小,先用 empty() 判断可以提升代码执行效率。

if(!empty($input) && is_array($input)){// 功能
}
http://www.lryc.cn/news/139548.html

相关文章:

  • 面试题-React(三):什么是JSX?它与常规JavaScript有什么不同?
  • 纯前端实现图片上传七牛云
  • win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器
  • EL与JSTL
  • 【Linux】动态库和静态库
  • R语言:联合多指标的ROC曲线
  • 将一个树形结构的数据平铺成一个一维数组(vue3)
  • OSCS开源安全周报第 56 期:Apache Airflow Spark Provider 任意文件读取漏洞
  • CleanMyMac2024永久版Mac清理工具
  • 软考高级系统架构设计师(一)计算机硬件
  • bat文件中自定义cmd命令;执行完退出命令提示符窗口
  • 深度学习的经典算法的论文、解读和代码实现
  • 开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS
  • 【私有GPT】CHATGLM-6B部署教程
  • 基于“R语言+遥感“水环境综合评价方法教程
  • To_Heart—题解——P6234 [eJOI2019] T形覆盖
  • [软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo
  • Spring BeanName自动生成原理
  • 论文阅读_图形图像_U-NET
  • 基于热交换算法优化的BP神经网络(预测应用) - 附代码
  • 基于秃鹰算法优化的BP神经网络(预测应用) - 附代码
  • 2.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)
  • 如何开启esxi主机的ssh远程连接
  • Android Studio实现解析HTML获取json,解析json图片URL,将URL存到list,进行瀑布流展示
  • Centos7 交叉编译QT5.9.9源码 AArch64架构
  • 爬虫逆向实战(二十)--某99网站登录
  • 【C# 基础精讲】LINQ to Objects查询
  • 【力扣】209. 长度最小的子数组 <滑动窗口>
  • 帮助中心应该用什么工具做?
  • 前端面试:【跨域与安全】跨域问题及解决方案