PHP使用相同的ID添加值

时间:2016-10-20 09:25:06

标签: php mysql arrays

这是另一个适合你的PHP版本!

我有两个数组来自两个具有相同列名但值不同的表。我创建了一个调用两个表以将数据转储到数组中的查询。我得到的值是: -

Array {
    [0] {
        [id] => 23,
        [count] => 300
    },
    [1] {
        [id] => 43,
        [count] => 400
    }
}

Array {
    [0] {
        [id] => 43,
        [count] => 200
    },
    [1] {
        [id] => 78,
        [count] => 55
    }
}

我想做的是: -

Array {
    [0] {
        [id] => 23,
        [count] => 300
    },
    [1] {
        [id] => 43,
        [count] => 600 <---- Notice how this has been added together
    },
    [2] {
        [id] => 78,
        [count] => 55
    }
}

我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

array_merge起初看起来似乎是一个不错的选择,但实际上并不是因为它不会合并数字键而只是附加它们。

最简单的方法是为此合并编写自己的函数。

看起来像这样:

function merge_array($first, $second)
{
    $result = array();
    append_array($result, $first);
    append_array($result, $second);

    return $result;
}

function append_array(&$result, $array)
{
    foreach($array as $entry){
        $index = get_element_index($result, $entry);
        if($index < 0){
            // Add as normal
            $result[] = $entry;
        }else{
            $result[$index]['count'] = $result[$index]['count'] + $entry['count'];
        }

    }
}

function get_element_index($array, $element)
{
    for($i = 0; $i < count($array); $i++){
        if($entry['id'] == $element['id']){
            return $i;
        }
    }
    return -1;
}