PHP检查数组包含多个具有数据数组的子数组或仅包含一个数据数组

时间:2014-06-26 03:28:44

标签: php arrays

我从API获得了一个数组回调,我需要解析它。 有时候它会像这样返回一个数据数组

array{
   [name] => aaa
   [address] => bbb
   [country] => ccc
}

或者有时会返回多个这样的数据数组

array{
   [0]=>array{
      [name] => aaa
      [address] => bbb
      [country] => ccc
   }

   [1]=>array{
      [name] => qqq
      [address] => www
      [country] => eee
   }

   [2]=>array{
      [name] => ttt
      [address] => yyy
      [country] => uuu
   }
}

确定返回数组包含多个数组的最佳方法是什么? 或者它的if语句是什么? 我知道如何编写函数并返回是否返回。像foreach然后检查is_array然后返回
但有没有明确的方式或PHP功能可以做到这一点?

3 个答案:

答案 0 :(得分:1)

你可以使用isset来知道第一个索引是否是一个数字(多维)或不是(一维):

if (isset($array[0]) {
    // Since the index is 0 but not the key 'name'
    // The array is multi-dimensional
} else {
    // Since the first index is not 0, the array is
    // uni-dimensional
}

答案 1 :(得分:0)

如果name键始终存在,您可以检查它是否设置在第一级,如果是,则您有一个值数组。

if(array_key_exists('name',$array)) {
  //single
}
elseif(isset($array[0]) && array_key_exists('name',$array[0])) {
  //multi
}
else {
  //neither!
}

答案 2 :(得分:0)

已经回答,但更广泛的方法不依赖于索引是否为数字:

if(is_array(reset($array)) {
    // multi-dimensional
} else {
    // single-dimensional
}