【问题标题】:PHP check array contain multiple sub arrays with data array OR just one data arrayPHP检查数组包含多个带有数据数组的子数组或只有一个数据数组
【发布时间】:2014-06-26 03:28:43
【问题描述】:

我从 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函数可以做到吗?

【问题讨论】:

    标签: php arrays


    【解决方案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
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-27
          • 1970-01-01
          • 2022-12-01
          • 1970-01-01
          相关资源
          最近更新 更多