Odebrałem tablicę z API i muszę ją przeanalizować. Czasami zwraca jedną tablicę danych taką jak ta
array{
[name] => aaa
[address] => bbb
[country] => ccc
}
LUB czasami zwraca wiele takich tablic danych
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
}
}
Jaki jest najlepszy sposób ustalenia tego zwrotutablica zawiera wiele tablic? Lub jakie jest dla tego wyrażenie if? Wiem, jak napisać funkcję, a zwrot jest, czy nie. jak foreach, sprawdź is_array, a następnie wróć
Ale czy istnieje jakikolwiek wyraźny sposób lub funkcja php może to zrobić?
Odpowiedzi:
1 dla odpowiedzi № 1Możesz po prostu użyć isset
wiedzieć, czy pierwszy indeks jest liczbą (wielowymiarową) czy nie (jednowymiarową):
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
}
0 dla odpowiedzi nr 2
Jeśli name
klucz zawsze istnieje, możesz sprawdzić, czy jest ustawiony na pierwszym poziomie, a jeśli tak, to masz jedną tablicę wartości.
if(array_key_exists("name",$array)) {
//single
}
elseif(isset($array[0]) && array_key_exists("name",$array[0])) {
//multi
}
else {
//neither!
}
0 dla odpowiedzi № 3
Już udzielono odpowiedzi, ale szersze podejście nie polega na tym, czy indeksy są liczbowe, czy nie:
if(is_array(reset($array)) {
// multi-dimensional
} else {
// single-dimensional
}