如何在PHP中检查我的数组是单数组还是多数组(数组内部的数组)?

时间:2018-06-29 13:28:07

标签: php arrays multidimensional-array

我有两种类型的数组。

第一类

 $arr = [1,2,3];

第二种类型

$arr = [[1,2,3],[4,5,6],[7,8,9]];

如何检查我的数组是单数组还是多数组。

我正在使用下面的代码,该代码始终使我成为 Multi Array

 if(is_array($arr)){   
   echo "Multi Array"; 
 } else{   
   echo "SingleArray"; 
 }

2 个答案:

答案 0 :(得分:2)

您在问是否可以检查多维数组,为此,不久前我想出了一个函数;

<?php
function is_multidimensional(array $array)
{
    foreach ($array as $part)
    {
        if (is_array($part)) return true;
    }
    return false;
}

$is_md_array = is_multidimensional($myarray); // True if it is, false if not

没有什么可以说也不能完全递归地检查数组的下层,但这是一个很好的开始,如果您不止一次需要这样做

答案 1 :(得分:1)

此尝试不如Sam Swift的答案,因为它不会在遇到的第一个阵列上停止,并且在大型阵列上可能会变慢 em>是因为in_array()
但是这里是:

// This will contain an array of boolean (is the item an array or not)
$are_arrays = array_map( function ($a) {
    return is_array($a);
}, $arr );

// This will return if true is found in our previous array
$is_multi = in_array(true, $are_arrays);


// Output debug
var_dump($is_multi);

它可以放入一行以进行“ 快速检查”:

$is_multi = in_array(true, array_map(function ($a) { return is_array($a); }, $arr));