我有两种类型的数组。
第一类
$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";
}
答案 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));