【发布时间】:2018-12-06 06:26:34
【问题描述】:
我正在尝试将每个 user_id 的 totalPlayed 值相加。我不想改变数组的整体结构,我只想通过对totalPlayed 值求和来压缩events 子数组。
这是一个 json 格式的示例数组:
[
{
"date": "May 29",
"date_start": "2018-05-29 05:00:00",
"date_end": "2018-05-30 04:59:59",
"interval": 29,
"calDay": "29 days ago",
"events": [
{
"totalPlayed": 184,
"user_id": 479
},
{
"totalPlayed": 906,
"user_id": 479
},
{
"totalPlayed": 400,
"user_id": 1446
},
{
"totalPlayed": 500,
"user_id": 1446
}
]
},
{
"date": "May 30",
"date_start": "2018-05-30 05:00:00",
"date_end": "2018-05-31 04:59:59",
"interval": 28,
"calDay": "28 days ago",
"events": [
{
"totalPlayed": 1469,
"user_id": 1626
},
{
"totalPlayed": 1482,
"user_id": 1690
},
{
"totalPlayed": 1434,
"user_id": 1690
}
]
}
]
我想要这个结果:
array (
0 =>
array (
'date' => 'May 29',
'date_start' => '2018-05-29 05:00:00',
'date_end' => '2018-05-30 04:59:59',
'interval' => 29,
'calDay' => '29 days ago',
'events' =>
array (
0 =>
array (
'totalPlayed' => 1090,
'user_id' => 479,
),
1 =>
array (
'totalPlayed' => 900,
'user_id' => 1446,
),
),
),
1 =>
array (
'date' => 'May 30',
'date_start' => '2018-05-30 05:00:00',
'date_end' => '2018-05-31 04:59:59',
'interval' => 28,
'calDay' => '28 days ago',
'events' =>
array (
0 =>
array (
'totalPlayed' => 1469,
'user_id' => 1626,
),
1 =>
array (
'totalPlayed' => 2916,
'user_id' => 1690,
),
),
),
)
我尝试了以下功能,但它不适合我。
function computeOutcome($array) {
$result=array();
foreach ($array as $item) {
$id=$item['user_id'];
if (isset($result[$id])) {
$result[$id]=$result[$id]+$item['time_played'];
} else {
$result[$id]=$item['time_played'];
}
}
return $result;
}
【问题讨论】:
-
我没有看到键控为
time_played的元素。 -
你好安德鲁。键是totalPlayed。很抱歉。
-
你的函数的输入是什么,它是你提供的第一个sn-p代码吗?
-
是的,先生。就这样。
-
你能在这里输出那个 Json 吗?该页面无法在手机上使用。
标签: php multidimensional-array merge sum