Не могу достать значение с многомерного массива PHP

157
28 июля 2019, 16:50

Вот мой массив $rsCategory. В [0] идут значения и последнее значение еще один массив [children] в котором есть еще 2 массива и мне надо вытянуть из них parent_id Вот что я пытаюсь сделать :

if ($rsCategory['children']['parent_id'] == 1){
        echo "helo world ";
    }

обращаюсь к массиву (в данном примере только к первому элементу ), в нем ищу ключ [children] и в нем с всех дочерних массивов достаю [parent_id] и если он равен 1 то выводит сообщение

Ну у меня в итоге на моём учебном сайте при клике на Телефоны самсунг или Телефоны епл должно выводится helo world

Answer 1

Используйте вложенные циклы:

$rsCategory = [
    [
        'id' => 1,
        'parent_id' => 0,
        'name' => 'Телефони',
        'children' => [
            [
                'id' => 3,
                'parent_id' => 1,
                'name' => 'Телефони Samsung'
            ],
            [
                'id' => 4,
                'parent_id' => 1,
                'name' => 'Телефони Aple'
            ]
        ]
    ]
];

foreach ($rsCategory as $arr) {
    foreach ($arr['children'] as $arr_2) {
        if ($arr_2['parent_id'] == 1) {
            echo $arr_2['name'] . "\n";
        }
    }
}
/* Результат:
Телефони Samsung
Телефони Aple
*/
Answer 2

Вы пропускаете целые уровни в ассоциативном массиве. Попробуйте так

if ($rsCategory[0]['children'][0]['parent_id'] == 1){
        echo "helo world ";
    }

Если для всех, тогда нужно пройтись циклом:

foreach ($rsCategory as $category) {
    foreach ($category['children'] as $child) {
        if ($child['parent_id'] == 1) {
            echo $child['id'] . ' - ' . $child['name'] . "\n";
        }
    }
}

Чтобы упростить решение вашей задачи "Ну у меня в итоге на моём учебном сайте при клике на Телефоны самсунг или Телефоны епл должно выводится helo world" скорее всего можно сделать обычный массив типа:

$rsCategory = [
    $catID1 => [
      'id' => $catID1, 
      'parent_id' => $parentID, 
      'name' => $categoryName2, 
      'level' => $level //если нужно
     ], 
    $catID2 => [
      'id' => $catID2, 
      'parent_id' => $parentID, 
      'name' => $categoryName2, 
      'level' => $level //если нужно
     ],
     .....
]

тогда при клике вы получаете $catID нужной категории и проверяете

if ($rsCategory[$catID]['parent_id'] == 1) {
   echo "helo world ";
}
READ ALSO
Чем заменить mysql_num_rows

Чем заменить mysql_num_rows

Ранее работало вот это

136
Не могу установить расширение mbstring

Не могу установить расширение mbstring

При установке phpunit через composer получаю следующую ошибку

147
В чем ошибка аjax удаления комментария?

В чем ошибка аjax удаления комментария?

Изучаю ajax и решил переделать на своем тестовом сайте удаление комментариевСобственно данный код удаляет комментарий только после перезагрузки...

122
Работа с анонимными классами

Работа с анонимными классами

Задался таким вот вопросомПопробую описать

117