【发布时间】:2017-08-03 19:41:00
【问题描述】:
此问题与其他问题不重复。这是不同的,这是当前代码,我正在尝试根据日期的相同键值对数组的值求和。
foreach ($TablesArr as $tr) {
$criteria = new CDbCriteria;
$criteria->select = 'date,mal';
$Arr1 = $tr::model()->findAll($criteria);
$array_1 = array();
foreach ($Arr1 as $a1) {
$array_1['date'] = $a1['date'];
$array_1['mal'] = $a1['mal'];
}
}
我当前的输出是:
Array
(
[date] => 2015-11-00
[mal] => 35
)
Array
(
[date] => 2015-12-00
[mal] => 20
)
Array
(
[date] => 2016-01-00
[mal] => 30
)
Array
(
[date] => 2016-01-00
[mal] => 10
)
Array
(
[date] => 2015-11-00
[mal] => 50
)
如果date 相同,则将数组中mal 的值相加。例如,在上面的数组中,日期2015-11-00 出现两次或两次以上(5 或 10 次等),然后将该日期的所有值相加。目前它出现两次,所以对于2015-11-00,mal 的值将是35+50=85。我希望我的输出如下所示:
Array
(
[date] => 2015-11-00
[mal] => 85
)
Array
(
[date] => 2015-12-00
[mal] => 20
)
Array
(
[date] => 2016-01-00
[mal] => 40
)
我试过了:
$result = array();
foreach($Arr1 as $data) {
$result[ $data['date'] ] += $data['mal'];
}
【问题讨论】:
-
@ficuscr 该问题不需要按另一列分组的总和。
-
它不是其他问题的重复,我已经有很多时间在 SOF 上,找不到任何对我有用的价值@ficuscr
-
已撤回。抱歉,看到很多这些,它们总是
array_sum/array_map解决方案。在上面涂上光泽。 -
你可以使用:$result = array(); foreach($Arr1 as $data) { $result [ $Arr1 ['date'] ] += $Arr1 ['mal']; }
-
@Barmar,它也不是那个问题的重复,那个问题的答案给了我错误
Illegal string offset 'date'