PHP二维数组根据相同键值合并(相加)

直接上代码:

<?php
$laArray = [
    ["id"=>11,"name"=>"happy","age"=>"20","moeny"=>100],
    ["id"=>29,"name"=>"lucy","age"=>"20","moeny"=>100],
    ["id"=>34,"name"=>"happy","age"=>"20","moeny"=>235],
    ["id"=>42,"name"=>"happy","age"=>"15","moeny"=>100],
    ["id"=>51,"name"=>"happy","age"=>"20","moeny"=>600],
    ["id"=>61,"name"=>"lucy","age"=>"20","moeny"=>350],
    ["id"=>65,"name"=>"lucy","age"=>"23","moeny"=>150],
];

$tmpArray = [];
foreach ($laArray as $row) {
    $key = $row['name'];
    if (array_key_exists($key, $tmpArray)) {
        if (is_array($tmpArray[$key]['moeny'])) {
            $tmpArray[$key]['moeny'][] = $row['moeny'];
        } else {
            $tmpArray[$key]['moeny'] = [$tmpArray[$key]['moeny'], $row['moeny']];
        }
    } else {
        $tmpArray[$key] = $row;
    }
}
print_r($tmpArray);
?>

具体代码运行效果如下:

Array
(
    [happy] => Array
        (
            [id] => 11
            [name] => happy
            [age] => 20
            [moeny] => Array
                (
                    [0] => 100
                    [1] => 235
                    [2] => 100
                    [3] => 600
                )
        )

    [lucy] => Array
        (
            [id] => 29
            [name] => lucy
            [age] => 20
            [moeny] => Array
                (
                    [0] => 100
                    [1] => 350
                    [2] => 150
                )
        )
)

这里是将相同的值合并成一个二维数组,如果将[$tmpArray[$key]['moeny'], $row['moeny']]变换成$tmpArray[$key]['moeny'] + $row['moeny'],则会变成相加。

评论