|
|
|
| есть массив с повторяющимися значениями, нужно преобразовать его в массив где значения повторяющихся элементов сложились бы
Array
(
[0] => Array
(
[tovar_id] => 10
[kolvo] => 0.11
[cena] => 9760
)
[1] => Array
(
[tovar_id] => 10
[kolvo] => 0.12
[cena] => 9760
)
[2] => Array
(
[tovar_id] => 10
[kolvo] => 0.15
[cena] => 9760
)
[3] => Array
(
[tovar_id] => 10
[kolvo] => 0.156
[cena] => 9760
)
[4] => Array
(
[tovar_id] => 10
[kolvo] => 0.21
[cena] => 9760
)
[5] => Array
(
[tovar_id] => 10
[kolvo] => 0.24
[cena] => 9760
)
[6] => Array
(
[tovar_id] => 10
[kolvo] => 0.4
[cena] => 9760
)
[7] => Array
(
[tovar_id] => 10
[kolvo] => 0.5
[cena] => 9760
)
[8] => Array
(
[tovar_id] => 10
[kolvo] => 0.529
[cena] => 9760
)
[9] => Array
(
[tovar_id] => 10
[kolvo] => 0.54
[cena] => 9760
)
[10] => Array
(
[tovar_id] => 10
[kolvo] => 0.69
[cena] => 9760
)
[11] => Array
(
[tovar_id] => 10
[kolvo] => 0.69
[cena] => 9760
)
[12] => Array
(
[tovar_id] => 10
[kolvo] => 1.2
[cena] => 9760
)
[13] => Array
(
[tovar_id] => 10
[kolvo] => 1.3
[cena] => 9331.3
)
[14] => Array
(
[tovar_id] => 310
[kolvo] => 25.64
[cena] => 15057
)
[15] => Array
(
[tovar_id] => 310
[kolvo] => 41.4
[cena] => 4415
)
[16] => Array
(
[tovar_id] => 313
[kolvo] => 0.583
[cena] => 9242
)
[17] => Array
(
[tovar_id] => 314
[kolvo] => 2.85
[cena] => 16000
)
[18] => Array
(
[tovar_id] => 314
[kolvo] => 8.11
[cena] => 18160
)
)
|
нужно получить такой же массив, но только те позиции где tovar_id одинаковый - нужно сложить их количество
сколько не бился не выходит
а может быть ещё и такая ситуация когда в массиве будут только элементы у которых все tovar_id одинаковые. | |
|
|
|
|
|
|
|
для: skinny
(08.02.2011 в 11:08)
| | А вы используйте в новом массиве в качестве ключа значение tovar_id
<?php
$arr = array (
0 => array
(
'tovar_id' => 10,
'kolvo' => 0.11,
'cena' => 9760
),
1 => Array
(
'tovar_id' => 10,
'kolvo' => 0.12,
'cena' => 9760
),
2 => Array
(
'tovar_id' => 10,
'kolvo' => 0.15,
'cena' => 9760
),
3 => Array
(
'tovar_id' => 10,
'kolvo' => 0.156,
'cena' => 9760
),
4 => Array
(
'tovar_id' => 10,
'kolvo' => 0.21,
'cena' => 9760
),
5 => Array
(
'tovar_id' => 10,
'kolvo' => 0.24,
'cena' => 9760
),
6 => Array
(
'tovar_id' => 10,
'kolvo' => 0.4,
'cena' => 9760
),
7 => Array
(
'tovar_id' => 10,
'kolvo' => 0.5,
'cena' => 9760
),
8 => Array
(
'tovar_id' => 10,
'kolvo' => 0.529,
'cena' => 9760
),
9 => Array
(
'tovar_id' => 10,
'kolvo' => 0.54,
'cena' => 9760
),
10 => Array
(
'tovar_id' => 10,
'kolvo' => 0.69,
'cena' => 9760
),
11 => Array
(
'tovar_id' => 10,
'kolvo' => 0.69,
'cena' => 9760
),
12 => Array
(
'tovar_id' => 10,
'kolvo' => 1.2,
'cena' => 9760
),
13 => Array
(
'tovar_id' => 10,
'kolvo' => 1.3,
'cena' => 9331.3
),
14 => Array
(
'tovar_id' => 310,
'kolvo' => 25.64,
'cena' => 15057
),
15 => Array
(
'tovar_id' => 310,
'kolvo' => 41.4,
'cena' => 4415
),
16 => Array
(
'tovar_id' => 313,
'kolvo' => 0.583,
'cena' => 9242
),
17 => Array
(
'tovar_id' => 314,
'kolvo' => 2.85,
'cena' => 16000
),
18 => Array
(
'tovar_id' => 314,
'kolvo' => 8.11,
'cena' => 18160
)
);
$result = array();
for($i = 0; $i < count($arr); $i++)
{
$result[$arr[$i]['tovar_id']]['tovar_id'] = $arr[$i]['tovar_id'];
$result[$arr[$i]['tovar_id']]['kolvo'] += $arr[$i]['kolvo'];
$result[$arr[$i]['tovar_id']]['cena'] += $arr[$i]['cena'];
}
echo "<pre>";
print_r($result);
echo "<pre>";
?>
|
Результат
Array
(
[10] => Array
(
[tovar_id] => 10
[kolvo] => 6.835
[cena] => 136211.3
)
[310] => Array
(
[tovar_id] => 310
[kolvo] => 67.04
[cena] => 19472
)
[313] => Array
(
[tovar_id] => 313
[kolvo] => 0.583
[cena] => 9242
)
[314] => Array
(
[tovar_id] => 314
[kolvo] => 10.96
[cena] => 34160
)
)
|
| |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 11:25)
| | да то что нужно
пришлось немного переделать его под другой функционал
но в общем и целом именно эта реализация помогла и стала основой.
я вчера ночью уже писал этот код, поэтому запарился и там цены складывать не нужно
там нужно вывести сумму всех матерьялов данного tovar_id, при том что цена может быть разная, поэтому просто перемножить цену на количество в результатирующем массиве не годиться, поэтому сумма вычислялась так же в процессе обработки первого массива
$massiv[$arr[$i]['tovar_id']]['tovar_id'] = $arr[$i]['tovar_id'];
$massiv[$arr[$i]['tovar_id']]['kolvo'] += $arr[$i]['kolvo'];
$massiv[$arr[$i]['tovar_id']]['summa'] += $arr[$i]['kolvo']*$arr[$i]['cena'];
|
| |
|
|
|
|
|
|
|
для: skinny
(08.02.2011 в 11:08)
| | А откуда массив этот, результат чего? | |
|
|
|
|
|
|
|
для: sim5
(08.02.2011 в 12:22)
| | результат выборки товаров для отчёта
отчёт по количеству и сумме за выбранный период. | |
|
|
|
|
|
|
|
для: skinny
(05.03.2011 в 01:17)
| | Значит лучше переложить эту задачу на запрос. | |
|
|
|