Answer the question
In order to leave comments, you need to log in
How to get a new array from the current one?
Through a variable I get such an array of product output
array(4) {
[0]=>
array(3) {
["name"]=>
string(58) "Адаптер прямоугольного сечения"
["price"]=>
string(8) "300 руб."
["catID"]=>
string(1) "7"
["catName"]=>
string(60) "Воздуховоды квадратного сечения"
}
[1]=>
array(3) {
["name"]=>
string(43) "Воздуховод прямошовный"
["price"]=>
string(8) "500 руб."
["catID"]=>
string(1) "8"
["catName"]=>
string(54) "Воздуховоды круглого сечения"
}
[2]=>
array(3) {
["name"]=>
string(51) "Врезка круглая в воздуховод"
["price"]=>
string(8) "60 руб."
["catID"]=>
string(1) "8"
["catName"]=>
string(54) "Воздуховоды круглого сечения"
}
[3]=>
array(14) {
["name"]=>
string(56) "Заглушка воздуховода торцевая"
["price"]=>
string(8) "900 руб."
["catID"]=>
string(1) "7"
["catName"]=>
string(60) "Воздуховоды квадратного сечения"
}
}
<div class="category-wrap">
<div class="category-name"><span>Названия категории №1</span></div>
<div class="category-products">
<div class="category-product">
<div class="category-product__name">Имя продукта</div>
<div class="category-product-price">Цена продукта</div>
</div>
<div class="category-product">
<div class="category-product__name">Имя продукта</div>
<div class="category-product-price">Цена продукта</div>
</div>
</div>
</div>
<div class="category-wrap">
<div class="category-name"><span>Названия категории №2</span></div>
<div class="category-products">
<div class="category-product">
<div class="category-product__name">Имя продукта</div>
<div class="category-product-price">Цена продукта</div>
</div>
</div>
</div>
Answer the question
In order to leave comments, you need to log in
1. Group products by catID and category also:
$products = []; // ваш массив с товарами
/**
* Группирует любой массив массивов по любому полю $indexKey в качестве индекса
*/
function groupBy(array $input, string $indexKey): array
{
return array_reduce($input, function($res, $data) use ($indexKey){
if (!isset($data[$indexKey])) {
return $res;
}
$res[$data[$indexKey]][] = $data;
return $res;
}, []);
}
$groupedProducts = groupBy($products, 'catID');
// такое работает при условии, что категория с одним id будет иметь последнее название из найденных,
// то есть если id один, а название разные, то возможны не ожидаемые результаты
$categories = array_column($products, 'catName', 'catID');
foreach($groupedProducts as $catId => $catProducts) {
// тут доступно название категории $categories[$catId] и ее $catId
foreach($catProducts as $product) {
// тут выводим сами товары $product
}
}
Для PHP 5 нужно [] заменить на array(), предлагаю это сделать самому :)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question