Задать вопрос

Что не так с разбором массивом php?

Помогите пожалуйста разобраться в ошибке:
Warning: Invalid argument supplied for foreach() in

Есть массив:
$settings['menu'] = array(
    0 => array(
        "name" => "Dashbord",
        "link" => "/dashbord/index",
        "icon" => "fa fa-dashboard nav_icon",
        "multimenu" => 0,
    ),
    1 => array(
        "name" => "Заказы",
        "link" => "/order/all",
        "icon" => "fa fa-shopping-basket nav_icon",
        "multimenu" => array(
            0 => array (
                "name" => "Создать заказ",
                "link" => "/order/add",
                "icon" => "fa fa-shopping-basket nav_icon",
            ),
        ),
    ),
);

И есть разбор массива:
foreach ($arr as $parameter => $value) {
            if($value['multimenu'] = 0) {
                $this->genMenu = '<li><a href="'.$value['link'].'" class=" hvr-bounce-to-right"><i class="'.$value['icon'].'"></i><span class="nav-label">'.$value['name'].'</span></a></li>';
            } else if($value['multimenu'] = 1) {
                foreach ($arr[$parameter]['multimenu'] as $value) {
                    print_r($value['name']);
                }
            }
        }

Собственно цикл работает и выдает мне ответ "name" => "Создать заказ", но вот ошибка мне не дает покоя..
Ругается на строку:
foreach ($arr[$parameter]['multimenu'] as $value) {

Спасибо
  • Вопрос задан
  • 154 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас в if'ах не проверка на равенство (==), а присвоение (=). Соответственно, первый if никогда не сработает (результат присвоения - присвоенное значение, а 0 трактуется как false).
Рекомендую использовать стиль Йоды, тогда таких ошибок будет меньше.
if (0 == $value['multimenu'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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