【问题标题】:php -Merging an Arrayphp - 合并数组
【发布时间】:2012-11-30 18:21:08
【问题描述】:

我有两个数组,我想在 php 中以特定方式合并它们。 所以我需要你的帮助来帮助我,因为我尝试过但失败了。

假设我有两个数组:

$array1= array(
    "foo"        => 3,
    "bar"        => 2,
    "random1"    => 4,
);

$array2= array(
    "random2"    => 3,
    "random3"    => 4,
    "foo"        => 6,
);

现在在合并过程中,我希望添加 公共键的值。 所以像 foo 存在于 array1array2 所以当合并 array1 和数组 2 时我应该得到"foo" => "9"

我更好的说明是最终的数组看起来像这样:

$array1= array(
    "foo"        => 9,
    "bar"        => 2,
    "random1"    => 4,
    "random2"    => 3,
    "random3"    => 4,
);

所以我再次希望将公共键的值添加到一起,并将非公共键添加到数组或新数组中

希望我说的够清楚

谢谢, 维杜

【问题讨论】:

  • foreach$array2,如果$array1 中存在现有键,则添加值,如果没有,则附加项目。

标签: php arrays algorithm merge


【解决方案1】:

类似的东西:

function mergeValues() {
    $result = array();
    $arraysToMerge = func_get_args();
    foreach ($arraysToMerge as $array) {
       foreach($array as $key => $value) {
           $result[$key] += $value;
       }
    }

    return $result;
}

$res = mergeValues($array1, $array2, $array3); // Can pass any ammount of arrays to a function.

【讨论】:

  • 恭喜,这真是一个优雅的解决方案。
【解决方案2】:
 foreach($array1 as $k => $v)
 {
     If (isset($array2[$k]))
         $array1[$k] += $array2[$k];
 }
 foreach($array2 as $k => $v)
 {
     If (!isset($array1[$k]))
         $array1[$k] = $array2[$k];
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多