php - 区分数组类型

时间:2014-03-13 07:58:01

标签: php arrays types

我有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:不是多维数组。

我怎么能处理这个?

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';
}