📜  php 检查数组是否是多维的 (1)

📅  最后修改于: 2023-12-03 15:03:42.938000             🧑  作者: Mango

检查数组是否是多维的

在 PHP 中,数组可以是单维或多维的。在某些情况下,我们需要确定一个数组是否是多维的,以便后续处理。以下是 PHP 中检查数组是否是多维的几种方法。

方法一:使用 is_array 函数和 count 函数
/**
 * 检查数组是否是多维的
 * 
 * @param array $arr 待检查的数组
 * 
 * @return bool 如果是多维数组则返回 true,否则返回 false
 */
function is_multidimensional_array($arr) {
    if (!is_array($arr)) {
        return false;
    }
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            return true;
        }
    }
    return false;
}

// 测试代码
$arr1 = array(1,2,3);
$arr2 = array(1, array(2,3), 4);
var_dump(is_multidimensional_array($arr1)); // false
var_dump(is_multidimensional_array($arr2)); // true
方法二:使用 array_filter 函数和 is_array 函数
/**
 * 检查数组是否是多维的
 * 
 * @param array $arr 待检查的数组
 * 
 * @return bool 如果是多维数组则返回 true,否则返回 false
 */
function is_multidimensional_array($arr) {
    return count(array_filter($arr, 'is_array')) > 0;
}

// 测试代码
$arr1 = array(1,2,3);
$arr2 = array(1, array(2,3), 4);
var_dump(is_multidimensional_array($arr1)); // false
var_dump(is_multidimensional_array($arr2)); // true
方法三:使用递归方式
/**
 * 检查数组是否是多维的
 * 
 * @param array $arr 待检查的数组
 * 
 * @return bool 如果是多维数组则返回 true,否则返回 false
 */
function is_multidimensional_array($arr) {
    if (!is_array($arr)) {
        return false;
    }
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            return true;
        }
        if (is_object($value)) {
            $value = (array)$value;
            return $this->is_multidimensional_array($value);
        }
    }
    return false;
}

// 测试代码
$arr1 = array(1,2,3);
$arr2 = array(1, array(2,3), 4);
var_dump(is_multidimensional_array($arr1)); // false
var_dump(is_multidimensional_array($arr2)); // true

以上便是几种检查数组是否是多维的方法,可以根据具体情况选择其中一种方法使用。