「作者主页」:士别三日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)){
// 功能
}
发表评论 取消回复