Контрольный массив PHP содержит несколько вложенных массивов с массивом данных или только один массив данных

#php #arrays

#php #массивы

Вопрос:

Я получил обратный вызов массива из 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 для него?
Я знаю, как написать функцию и вернуть is или нет. например, foreach затем проверяет is_array затем возвращает
Но есть ли какой-либо экспресс-способ или функция php может это сделать?

Ответ №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]) amp;amp; array_key_exists('name',$array[0])) {
  //multi
}
else {
  //neither!
}
  

Ответ №3:

Уже ответил, но более широкий подход, не зависящий от того, являются ли индексы числовыми или нет:

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