разделить двумерный массив

amalino

Новичок
Здравствуйте все!
Имеется массив товаров, отсортированный по разным секциям (возрастанию элемента section_id).
Как пример:

$products = array(
array('id' =>1, 'name'=>'gel', 'section_id'=>1),
array('id'=>2, ,name'=> 'cream', 'section_id'=>1),

array('id'=>3, ,name'=> 'water', 'section_id'=>2),
array('id'=>4, ,name'=> 'juice', 'section_id'=>2),

array('id'=>5, ,name'=> 'vitamins', 'section_id'=>3),
array('id'=>3, ,name'=> 'aspirin', 'section_id'=>3));


Нужно этот массив разделить на массивы с одинаковыми section_id.
Причем в реале элементов в секции может быть много, и самих секций тоже.

Я попробовала сначала сформировать массив, в котором количество индексов соответствовало бы количеству секций, потом бы уже было проще его разделить по индексам.
Начала так.

$sections_all = array();
$sections = array();

foreach($products as $product)
{
$sections_all[] = $product['section_id']; // массив из всех section_id
}

$sections = array_unique($sections_all); // массив из уникальных section_id
$sections_count = count($sections); // посчет количества секций

Потом пройтись по основному массиву $products столько раз, сколько имеется секций.

$section_row = array();
$product_sect = array();

for ($i=0; $i<$sections_count; $i++)
{
$current_section = $sections[$i];

foreach ($products as $product)

if ($product['section_id'] == $current_section)
{
$section_row[] = $product;
}

else
{
break;
}

$product_sect[$i] = $section_row;
}

Понятно, что это не работает. Показала как идею.
Я не знаю, как сделать, чтобы перед break указатель массива смещался на количество итераций в foreach, а потом новый цикл начинал уже указанного элемента. Счетчика цикла в php нету, вроде.
А, может, подход в корне не верен и это полная чепуха?

Вобщем, то ли соображалки не хватает, то ли знаний. То ли и того и другого. :D
 

Mamont

Новичок
Нужно этот массив разделить на массивы с одинаковыми section_id.
PHP:
$sections = array();
foreach( $products as $product ){
   $sections [$product['section_id']] [] = $product;
}
А вообще, нужно знать, в чем стоит глобальная задача ;)
PS описался :(
 

craz

Нестандартное звание
Нужно этот массив разделить на массивы с одинаковыми section_id.
PHP:
$sections = array();
foreach( $products => $product ){
   $sections [$product['section_id']] [] = $product;
}
А вообще, нужно знать, в чем стоит глобальная задача ;)
а синтаксис знать не надо типа?
 

amalino

Новичок
Нужно этот массив разделить на массивы с одинаковыми section_id.
PHP:
$sections = array();
foreach( $products => $product ){
   $sections [$product['section_id']] [] = $product;
}
А вообще, нужно знать, в чем стоит глобальная задача ;)
Спасибо большое! :) Честно говоря, подозревала, что есть простое лаконичное решение. Не обессудьте - опыта маловато, тянет изобретать пушки для воробьев.
А моим решением перспектива добиться результата была какая-то?
Задача стоит брать названия продукции из БД и делать из них меню, на каждую секцию свое.
 
Сверху