@DemonFromIrk

Как правильно узнать, содержится ли один массив или несколько в многомерном массиве?

Разбираю XML после SOAP запроса.
Есть вариант, когда если в подкатегории несколько записей, то приходит что-то типа
mainarr => array (1)
  ⇄⧉arr2 => array (2)
    ⇄⧉0 => array (3)
        ⇄⧉attributes => array (2)
        ⇄⧉Name => array (1)
        ⇄⧉Date => array (1)
    ⇄⧉1 => array (5)
        ⇄⧉attributes => array (2)
        ⇄⧉Name => array (1)
        ⇄⧉Date => array (1)


А если возвращается данные, что в подкатегории только одна запись, то возвращаются сразу данные по записи, без 0 и тп:
mainarr => array (1)
  ⇄⧉ arr2 => array (4)
    ⇄⧉attributes => array (2)
    ⇄⧉Name => array (1)
    ⇄⧉Date => array (1)


Как проще всего проверить есть ли вложенные массивы и если да, то сколько их?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
if (is_array($data->mainarr->arr2)) {
    doSomething($data->mainarr->arr2);
} else {
    doSomething([$data->mainarr->arr2]);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vechnokrainii
@vechnokrainii
ну почти всегда(
Если ты xml переводишь сразу в массив и работаешь с ним, то
if(array_key_exists('0', $arr) {
    //значит есть несколько массивов
} else {
    // значит там сразу значения
}
Ответ написан
Комментировать
@Siverius
$array = [
    'mainarr' => [
        'arr2' => [
            0 => [
                'attr' => [
                    'name' => 'name0'    
                ],
            ],
            1 => [
                'attr' => [
                    'name' => 'name1'    
                ],
            ],
            2 => [
                'attr' => [
                    'name' => 'name2'    
                ],
            ],
            3 => [
                'attr' => [
                    'name' => 'name3'    
                ],
            ],    
        ],    
    ],    
];

$array2 = [
    'mainarr' => [
        'arr2' => [
            'attr' => [
                'name' => 'name2'    
            ],
        ]
    ]
];

var_dump(count(array_column($array['mainarr']['arr2'], 'attr'))); //4
var_dump(count(array_column($array2['mainarr']['arr2'], 'attr'))); //0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы