我有3个阵列:
$a = array('a',array('b','c'),'d'); (Type 1)
$b = array(array(1,2),3); (Type 2)
$c = array('e'=>'f', 'g'=>'h'); (Type 3)
我需要在函数中识别这3种类型的数组,以便区别对待它们。
if(Type 1)
{
Do A;
}
elseif(Type 2)
{
Do B;
}
elseiF(Type 3)
{
Do C;
}
//编辑
我需要知道:
类型1:第一项是字符串值;
类型2:第一项是数组;
类型3:不是多维数组。
我怎么能处理这个?
答案 0 :(得分:1)
尝试使用我的功能,我已经测试了几次,似乎工作正常。
我尝试对其进行优化,以便在阵列较大时不会浪费资源。
$a = array('a',array('b','c'),'d');
$b = array(array(1,2),3);
$c = array('e'=>'f', 'g'=>'h');
function arrayCheck($array){
if(!is_array($array)) return null;
$first = reset($array);
if(is_array($first)) return 2;
foreach($array as $v){
if(is_array($v)){
$is_multi = true;
break;
}
}
if(!isset($is_multi)) return 3;
if(is_string($first)) return 1;
}
var_dump(arrayCheck($a)); // returns 1
var_dump(arrayCheck($b)); // returns 2
var_dump(arrayCheck($c)); // returns 3
答案 1 :(得分:0)
为此做一个技巧
$arr = array('a',array('b','c'),'d');
$join = join(',',$arr);
echo $join;
这将出局
a,Array,d
解析上面的字符串,你可以找到
类型1:第一项是字符串值;
类型2:第一项是数组;
类型3:不是多维数组。
我想这会起作用
答案 2 :(得分:0)
function getArrayType($myArray=null) {
if(!is_array($myArray))
return false;
if (count($myArray) == count($myArray, COUNT_RECURSIVE))
return 'type 3';
while (is_array($myArray[0])) {
$myArray[0] = array_pop($myArray);
}
if (is_numeric($myArray[0]))
return 'type 2';
return 'type 1';
}