#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
}