Есть массив с категориями, не вложенные, все подряд идут.
Array
(
[0] => Array
(
[category_id] => 62
[name] => Категория 1
[parent_id] => 0
[sort_order] => 1
[img] => img1.jpg
[href] => google.com/1
)
[1] => Array
(
[category_id] => 64
[name] => Подкатегория 1.1
[parent_id] => 62
[sort_order] => 2
[img] => img2.jpg
[href] => google.com/2
)
[1] => Array
(
[category_id] => 63
[name] => Подкатегория 1.2
[parent_id] => 62
[sort_order] => 1
[img] => img3.jpg
[href] => google.com/3
)
[5] => Array
(
[category_id] => 71
[name] => Категория 2
[parent_id] => 0
[sort_order] => 3
[img] => img.4
[href] => google.com/4
)
[6] => Array
(
[category_id] => 72
[name] => Подкатегория 2.1
[parent_id] => 71
[sort_order] => 2
[img] => img5.jpg
[href] => google.com/5
)
такого вида, всегда 2 уровня, возможно будет 3.
Нужно вывести с сортировкой
Категория 1
- подкатегория 1.1
- подкатегория 1.2
Категория 2
- подкатегория 2.1
Как сделал я
if ($manufacturer_categories) {
foreach ($manufacturer_categories as $category) {
if ($category['parent_id'] == 0) {
$toplvl[] = $category;
} else {
$sublvl[] = $category;
}
}
foreach ($toplvl as $tops) {
echo $tops['name'];
foreach ($sublvl as $subs) {
echo '<ul>';
if ($subs['parent_id'] == $tops['category_id']) {
echo '<li>' .$subs['name'] . '</li>';
}
echo '</ul>';
}
}
}
1. не знаю как сделать сортировку
2. по моему 3 форича в данной ситуации перебор, можно написать гораздо компактнее