2017-01-18 1 views
1

Я новичок в массивах Я использовал строковые переменные вместо массивов, но теперь решил изучить язык как профессионал, в настоящее время я получаю категории, вызывая метод внутри класс, и пытается получить подкатегории каждого и каждую сгружена категориюPHP - Вложенные foreach() в модуле и в представлении

в модуле (чистая логика не HTML) код выглядит так:

// FOR THE MENU, GET ALL CATEGORIES 
$cats = $cat->getCategories(); 
// FOR THE MENU, GET ALL SUBCATEGORIES IN A GIVEN CATEGORY 
foreach($cats as $cat){ 
$sub_cats = $sub_cat->getSubCategoriesByCategoryId($cat['id']); 
} 

Примечание: код правильно забирающий все данные

В представлении (результаты PHP, введенные в HTML)

<?php foreach ($cats as $cat){ ?> 
    <li class="dropdown"> 
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><?php echo $cat['name']; ?> <span class="caret"></span></a> 
    <ul class="dropdown-menu"> 
     <?php foreach ($cat['id'] as $sub_cat){ ?> 
     <li><a href="#"><?php echo $sub_cat['name']; ?></a></li> 
     <?php } ?> 
    </ul> 
    </li> 
<?php } ?> 

вид код не работает, то выпадающий показывает следующую ошибке Предупреждения: Недействительный аргумент для Еогеаспа() в /Applications/MAMP/htdocs/b/header.php на линии 52

+0

Что делает var_dump ($ cats)? –

+0

Убедитесь, что массив '$ sub_cat' имеет значения? –

+0

, повторяющий следующий $ cat ['name'], дает мне правильные значения, но повторение $ sub_cat ['name'] возвращает ошибку, упомянутую выше, и ues таблицы базы данных содержат тестовые значения –

ответ

2

Затем, вы должны сохранить subcats для каждой кошки, что-то вроде этого

// FOR THE MENU, GET ALL CATEGORIES 
$cats = $cat->getCategories(); 
// FOR THE MENU, GET ALL SUBCATEGORIES IN A GIVEN CATEGORY 
$sub_cats = array(); 
foreach($cats as $cat){ 
    $sub_cats[$cat['id']] = $sub_cat->getSubCategoriesByCategoryId($cat['id']); 
} 

Затем на ваш взгляд:

<?php foreach ($cats as $cat): ?> 
    <li class="dropdown"> 
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><?php echo $cat['name']; ?> <span class="caret"></span></a> 
    <ul class="dropdown-menu"> 
     <?php foreach ($sub_cats[$cat["id"]] as $sub_cat):?> 
     <li><a href="#"><?php echo $sub_cat['name']; ?></a></li> 
     <?php endforeach; ?> 
    </ul> 
    </li> 
<?php endforeach; ?> 
+0

Я думаю, что это я попробую, и пусть вы знаете, –

+0

работает как шарм ... большое спасибо @Pipe –

+0

Я рад, что это сработало. Затем отметьте это как выбранный ответ. ;) – Pipe

 Смежные вопросы

  • Нет связанных вопросов^_^