我需要扁平化一个多维数组,以形成一个唯一值及其总和的关联数组。
我的样品阵列:
[
[
'winners' => [
'Gold Member',
'CROTCH SNIFFER',
'TEAM #1'
],
'prizeTotal' => 20
],
[
'winners' => [
'TEAM #1',
'CROTCH SNIFFER'
],
'prizeTotal' => 60
],
[
'winners' => [
'Gold Member',
'TEAM #1'
],
'prizeTotal' => 30
],
[
'winners' => [
'TEAM #1',
'TEAM #2',
'SCREW-NUT-BOLT'
],
'prizeTotal' => 90
]
]
请原谅这些名字...这不是我的DB。
在每个数据集中,prizeTotal
被授予winners
子数组中的每个值。
如何对winners
值进行分组,并对它们各自的prizeTotal
值求和?
预期结果:
array (
'Gold Member' => 50,
'CROTCH SNIFFER' => 80,
'TEAM #1' => 200,
'TEAM #2' => 90,
'SCREW-NUT-BOLT' => 90,
)
4条答案
按热度按时间tp5buhyn1#
假设您可以将所有数组收集到一个数组中,即:
那么
这将产生如下结果:
o3imoua42#
您需要创建一个新数组来保存结果,然后对于每个现有数组,检查是否已经为该团队处理了一个数组
如果有,那么只需将prizeTotal添加到存储在新数组条目中的该团队的prizeTotal。
如果没有,只需将团队的条目添加到新数组中。
vltsax253#
要生成唯一团队及其累积得分的关联数组:
1.使用循环访问每个数据子集
1.使用
extract()
可以方便地将赢家和prizeTotal数据作为单个变量访问。1.循环赢家元素
1.将赢家声明为结果数组中的键,其值应为prizeTotal加上缓存值(如果没有缓存值,则为零)。
代码:(Demo)
“数组解构”也可以创建单独的变量,而不是调用
extract()
。ffscu2ro4#
我模仿mysql
SUM()
和GROUP BY
做了一个函数,希望能满足你的需求:结果是: