Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按字段对数组分组并给出总值_Php_Arrays - Fatal编程技术网

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
        )

)