📜  如何在PHP检查数组是否是多维的?(1)

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

如何在PHP检查数组是否是多维的?

在PHP中,数组可以是单维的也可以是多维的。当数组包含嵌套层级时,就是一个多维数组。检查数组是否是多维的有时很有用。在此我们将介绍PHP中的两种方法来检查数组是否是多维的。

方法一:使用array_depth()函数

PHP的array_depth()函数可以用于确定数组的深度或数组是否是多维的。该函数使用递归算法来处理多维数组,从而确定其深度。

示例代码:

function array_depth($array) {
    if(!is_array($array)) {
        return 0;
    }
    $max_depth = 1;
    foreach ($array as $value) {
        if (is_array($value)) {
            $depth = array_depth($value) + 1;
            if ($depth > $max_depth) {
                $max_depth = $depth;
            }
        }
    }
    return $max_depth;
}

以上代码创建了一个名为array_depth()的函数,它递归地检查数组。如果数组不是多维的,它将返回0。如果数组是多维的,则返回其深度。

示例用法:

$array = [1, 2, 3];
echo array_depth($array); // output: 1

$array = [[1], [2, 3]];
echo array_depth($array); // output: 2

$array = [[[1]]];
echo array_depth($array); // output: 3
方法二:使用count()和array_filter()函数

另一种检查数组是否是多维的方法是使用count()和array_filter()函数。

示例代码:

function is_multi_dimensional($array) {
    return (count($array) != count($array, COUNT_RECURSIVE));
}

以上代码创建了一个名为is_multi_dimensional()的函数,它通过比较数组的两个计数值来确定数组是否是多维的。

示例用法:

$array = [1, 2, 3];
var_dump(is_multi_dimensional($array)); // output: bool(false)

$array = [[1], [2, 3]];
var_dump(is_multi_dimensional($array)); // output: bool(true)

$array = [[[1]]];
var_dump(is_multi_dimensional($array)); // output: bool(true)

以上代码输出布尔值true或false来指示数组是否是多维的。

总结

您可以使用array_depth()函数或count()和array_filter()函数来检查数组是否是多维的。与array_depth()相比,第二个方法具有更简单的语法和更高的性能。