【问题标题】:Merging multiple associative arrays in PHP在 PHP 中合并多个关联数组
【发布时间】:2009-10-28 18:07:30
【问题描述】:

我不太确定该怎么做。假设我有 2 个关联数组

$arr1 = array('a' => "1", 'b' => "2", 'c' => "3");
$arr2 = array('a' => "9", 'b' => "8", 'c' => "7");

我怎么可能产生如下的“加法”数组

$arr1 = array(
  array('a', "1", "9"),
  array('b', "2", "8"),
  array('c', "3", "7")
);

我不确定上述语法是否正确。如果不是,那么如下所示的添加也可以

$arr1 = array(
  'a' => array("1", "9"),
  'b' => array("2", "8"),
  'c' => array("3", "7")
);

谢谢

【问题讨论】:

  • 你不是说array('a' => array('1', '9'), ...吗?
  • @SilentGhost,可能。我对多个嵌套级别的关联数组没有太多经验。但是您的格式也应该可以完成这项工作。

标签: php arrays


【解决方案1】:
foreach($arr1 as $k=>$v) {
    $new[$k] = array($v, $arr2[$k]);
}

是我认为你想要的。但如果我弄错了,那么你可以这样做:

foreach($arr1 as $k=>$v) {
    $new[] = array($k, $v, $arr2[$k]);
}

【讨论】:

  • 您的第二个表单将生成他正在寻找的内容。这假定两个关联数组将具有相同的键。
  • 是的,它从来没有打算变得更复杂。生成更通用的解决方案相当容易,但不确定 OP 是否需要它。
  • 感谢你们两个 :) 我进行了测试,看起来 Ben 的答案更适合它,但我仍然有空白的小错误。我会打开另一个问题
【解决方案2】:
$arr1 = array('a' => "1", 'b' => "2", 'c' => "3");
$arr2 = array('a' => "9", 'b' => "8", 'c' => "7");

$summ=array();
foreach(array($arr1,$arr2) as $arr){
    $keys=array_keys($arr);
    foreach($keys as $key){
        if(isset($summ[$key]))
            $summ[$key][]=$arr[$key];
        else $summ[$key]=array($arr[$key];
    }
}
/*
This will have made:
$sum = array(  
    'a' => array("1", "9"),  
    'b' => array("2", "8"),  
    'c' => array("3", "7")
);

I leave it up to you to now reduce this one more step to match your desired output.
*/

【讨论】:

  • SilentGhost 有更好的一个,如果它只有 2 个数组并且它们具有相同的键。如果键可能不同,或者您需要从 2 个数组扩展,那么这更接近您的需要。
  • 好点。我认为它们可能会有所不同。例如,一个数组可能有一个 b d(没有 c),但另一个数组有一个 b c(没有 d)。在这种情况下,我将需要它作为 b c d,但插入空白以表示其中一个或另一个缺少的任何内容。你说这个会比另一个做得更好?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2011-10-12
相关资源
最近更新 更多