感觉像是重复的,但是我遇到了很多类似的问题,不能完全解决问题。
我有以下要按“部门”分组的数组,然后对“ MCAP”键求和。
Array
(
[0] => Array
(
[TICKER] => ABC
[SECTOR] => 30
[MCAP] => 1000
)
[1] => Array
(
[TICKER] => XYZ
[SECTOR] => 30
[MCAP] => 500
)
[2] => Array
(
[TICKER] => ASD
[SECTOR] => 25
[MCAP] => 750
)
)
我要做的是:
(
[30] => Array
(
[MCAP] => 1500
)
[25] => Array
(
[MCAP] => 750
)
)
我尝试过使用foreach循环,而我所设法管理的最好的方法是对所有MCAP值求和。我对此无能为力,感谢您在挑战中的帮助。
编辑:这是我尝试过的:
$sector = array();
foreach($stocks as $row) {
$sum += $row['MCAP'];
$sector[$row['SECTOR']]['MCAP'] = $sum;
}
但是结果是这样的
[30] => Array
(
[MCAP] => 1500
)
[25] => Array
(
[MCAP] => 2250
)
答案 0 :(得分:1)
尝试像这样使用扇区值求和:
$res = array();
foreach($data as $key=> $value){
$res[$value['SECTOR']] += $value['MCAP'];
}
var_dump($res); // this output the expected result you want
答案 1 :(得分:1)
遍历数组,并检查结果数组中是否存在当前的SECTOR
键。如果不是,则将其定义为零。然后将MCAP
的当前值添加到结果数组。
$result = array();
foreach ($array as $key=> $value) {
if (!isset($result[$value['SECTOR']]))
$result[$value['SECTOR']]['MCAP'] = 0;
$result[$value['SECTOR']]['MCAP'] += $value['MCAP'];
}
print_r($result);
答案 2 :(得分:1)
您需要创建另一个空数组来保存sum
。循环时,可以创建每个section
并求和mcap
的值:
$arraySum = array();
foreach($array as $key => $value) {
if (!isset($arraySum[$value['SECTOR']]))
$arraySum[$value['SECTOR']] = $value['MCAP'];
else
$arraySum[$value['SECTOR']] += $value['MCAP'];
}
print_r($arraySum);