我有一个如下所示的数组:
Array
(
[0] => Array
(
[amount] => 60.00
[store_id] => 1
)
[1] => Array
(
[amount] => 40.00
[store_id] => 1
)
[2] => Array
(
[amount] => 10.00
[store_id] => 2
)
)
将数组减少到总计与store_id相关的'amount'的类似数组的好方法。
对于实例,我想得到这个:
Array
(
[0] => Array
(
[amount] => 100.00
[store_id] => 1
)
[2] => Array
(
[amount] => 10.00
[store_id] => 2
)
)
答案 0 :(得分:2)
准确再现您的要求:
<?php
$stores = array();
$result = array();
foreach($rows as $i => $entry) {
if (false === ($j = array_search($entry['store'], $stores))) {
$stores[$i] = $entry['store'];
$result[$i] = $entry;
}
else {
$result[$j]['amount'] += $entry['amount'];
}
}
答案 1 :(得分:2)
要详细说明Thrawn的答案,你想要的是你的数组被store_id索引。你最终想要的是:
array (
[1] => 100.00
[2] => 10.00
)
如果你不能从一开始就构造它,但是你被迫使用这个原始数组结构(我们称之为$stores
),请执行以下操作:
$totals = array();
foreach ($stores as $store) {
if (!array_key_exists($store['store_id'], $totals)) {
$totals[$store['store_id']] = $store['amount'];
}
else {
$totals[$store['store_id']] += $store['amount'];
}
}
有很多方法可以执行array_key_exists检查。 <{1}}和empty
都足够了。