Php 按字段对数组分组并给出总值
我试图通过“标签”对以下数组进行分组,以给出每个人的总值Php 按字段对数组分组并给出总值,php,arrays,Php,Arrays,我试图通过“标签”对以下数组进行分组,以给出每个人的总值 Array ( [0] => Array ( [label] => John [value] => 84 ) [1] => Array ( [label] => Darren [value] => 28 ) [2] => Array ( [label] => Jo
Array
(
[0] => Array
(
[label] => John
[value] => 84
)
[1] => Array
(
[label] => Darren
[value] => 28
)
[2] => Array
(
[label] => John
[value] => 20
)
[3] => Array
(
[label] => Morgan
[value] => 20
)
[4] => Array
(
[label] => Hannah
[value] => 14
)
[5] => Array
(
[label] => Morgan
[value] => 14
)
[6] => Array
(
[label] => Darren
[value] => 10
)
)
这将是最终结果:
Array
(
[0] => Array
(
[label] => John
[value] => 104
)
[1] => Array
(
[label] => Darren
[value] => 38
)
[2] => Array
(
[label] => Morgan
[value] => 34
)
[3] => Array
(
[label] => Hannah
[value] => 14
)
)
我假设我需要使用foreach将标签分组在一起,但我一直在寻找最好的方法。我会这样做(希望您的数组位于
$array
):
试试这个:
<?php
$array = [
['label' => 'John',
'value' => '84'],
['label' => 'Darren',
'value' => '28'],
['label' => 'John',
'value' => '20'],
['label' => 'Morgan',
'value' => '20'],
['label' => 'Hannah',
'value' => '14'],
['label' => 'Morgan',
'value' => '14'],
['label' => 'Darren',
'value' => '10']
];
$final = [];
foreach ($array as $arr)
$final[$arr['label']] = isset($final[$arr['label']]) ? $final[$arr['label']] + $arr['value'] : $arr['value'];
$result = [];
foreach ($final as $label => $value)
$result[] = ['label' => $label, 'value' => $value];
print_r($result);
<?php
$array = [
['label' => 'John',
'value' => '84'],
['label' => 'Darren',
'value' => '28'],
['label' => 'John',
'value' => '20'],
['label' => 'Morgan',
'value' => '20'],
['label' => 'Hannah',
'value' => '14'],
['label' => 'Morgan',
'value' => '14'],
['label' => 'Darren',
'value' => '10']
];
$final = [];
foreach ($array as $arr)
$final[$arr['label']] = isset($final[$arr['label']]) ? $final[$arr['label']] + $arr['value'] : $arr['value'];
$result = [];
foreach ($final as $label => $value)
$result[] = ['label' => $label, 'value' => $value];
print_r($result);
Array
(
[0] => Array
(
[label] => John
[value] => 104
)
[1] => Array
(
[label] => Darren
[value] => 38
)
[2] => Array
(
[label] => Morgan
[value] => 34
)
[3] => Array
(
[label] => Hannah
[value] => 14
)
)