@PoodingRex

Как разбить array на группы по значениям?

Всем доброго времени суток. Вопрос дилетантский, но даже не знаю, где это можно посмотреть.
В общем, имею массив, результаты которого нужно группировать по значению order_id. Т.е., например, должно быть так:
-- Начало ряда --
Товар 4
Товар 1
-- Конец ряда --

-- Начало ряда --
Товар 1
Товар 3
-- Конец ряда --

Подскажите, пожалуйста, как это можно сделать. Желательно, на примере.

Массивы выглядит так:
Array ( 
    [0] => Array ( [name] => Товар 4 [order_id] => 12 ) 
    [1] => Array ( [name] => Товар 1 [order_id] => 12 ) 
    [2] => Array ( [name] => Товар 1 [order_id] => 13 ) 
    [3] => Array ( [name] => Товар 3 [order_id] => 13 ) 
    [4] => Array ( [name] => Товар 1 [order_id] => 14 ) 
    [5] => Array ( [name] => Товар 2 [order_id] => 14 ) 
    [6] => Array ( [name] => Товар 3 [order_id] => 15 ) 
    [7] => Array ( [name] => Товар 2 [order_id] => 16 ) 
    [8] => Array ( [name] => Товар 3 [order_id] => 16 ) 
)


Пробовал так, но отдаёт каждое значение в обёртке
foreach ($res as $row) {
    echo 'начало ряда';
    echo  $row['name'];
    echo 'конец ряда';
}
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
HectorPrima
@HectorPrima
программист
$res = array();
$res[] = array('name'=>4,'order_id' => 12);
$res[] = array('name'=>1,'order_id' => 12);
$res[] = array('name'=>1,'order_id' => 13);
$res[] = array('name'=>3,'order_id' => 13);

$prev = 0;
foreach ($res as $row) {
    if ($prev <> $row['order_id'])
    {
    	if ($prev > 0)
    		echo "конец ряда\n";
    	echo "начало ряда\n";
    }
    echo  $row['name']."\n";
    $prev = $row['order_id'];
}
if ($row['order_id'])
	echo "конец ряда\n";
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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