【问题标题】:Is it possible to merge these arrays in PHP? [duplicate]是否可以在 PHP 中合并这些数组? [复制]
【发布时间】:2012-12-19 00:53:53
【问题描述】:

可能重复:
PHP: Merge 2 Multidimensional Arrays

我有这些数组,我想将它们合并到一个数组中。

$arrayAAA[0]['name'] = "stackoverflow";
$arrayBBB[0]['color'] = "white";
$arrayCCC[0]['media'] = "web";

我想像这样合并这些。

$newArray[0]['name'] //"stackoverflow"
$newArray[0]['color'] //"white"
$newArray[0]['media'] //"web"

如果有人知道如何做到这一点,请给我帮助。 我以为我可以使用 array_merge() 合并它们,但这个函数在我的情况下不起作用。

提前非常感谢!

【问题讨论】:

  • 真正的错误是 php 的函数名称混乱
  • 对不起!我的意思是array_merge()。我尝试了这个功能,但这并没有给我想要的结果。

标签: php arrays


【解决方案1】:

我不知道您在寻找解决方案上浪费了多少时间,而您本可以编写一个手动解决方案。

foreach(array($arrayAAA, $arrayBBB, $arrayCCC) as $v){
    foreach($v as $iv){
        $result[key($iv)] = $iv[key($iv)];
    }
}

CodePad

【讨论】:

    【解决方案2】:

    我想你想使用array_merge(),而不是merge_array()

    【讨论】:

    • array_merge() 不会给出确切的结果。
    • 它不适用于多维数组?
    • 可以,但不会产生该结果。它将为每个子数组添加键,例如 Array([0] => Array ([name] => stackoverflow) [1] => Array([color] => white) [2] => Array([media] => web)) 在 OP 的示例中,所有键都是 [0] 数组的成员。
    • 哦,那很有趣。我为不正确的答案道歉
    • 对不起!我的意思是array_merge()。我尝试了这个功能,但这并没有给我想要的结果。
    【解决方案3】:

    那么,这也不行吗?

    $x = array();
    $x[0] = array_merge($arrayA[0], $arrayB[0], ...);
    

    还有array_merge_recursive 功能。但我很确定它只会附加每个子数组。

    【讨论】:

    • 如果$arrayAAA 包含多个元素怎么办?
    • @shiplu.mokadd.im 那么那个额外的元素将被忽略
    • 实际上,$arrayAAA 有 40 个元素。 $arrayAAA[0]['key'] ~ $arrayAAA[40]['key']
    • @crzyonez777 你应该提到那个 ;)
    • @dualed 对此感到抱歉。但你的建议非常适合我的情况。
    【解决方案4】:

    对于更复杂的数组,这应该可以工作,但似乎应该有更简单的方法。

    $arrayAAA[0]['name'] = "stackoverflow";
    $arrayBBB[0]['color'] = "white";
    $arrayCCC[0]['media'] = "web";
    
    function merge_arrays(){
        $aArgs = func_get_args();
    
        $aReturn = array();
        if($aArgs != array()){
            foreach($aArgs as $aArr){
                foreach($aArr as $mKey => $aSub){
                    if(!isset($aReturn[$mKey])){
                        $aReturn[$mKey] = array();
                    }
    
                    foreach($aSub as $mSubKey => $mVal){
                        $aReturn[$mKey][$mSubKey] = $mVal;
                    }
                }
            }   
        }
    
        return $aReturn;
    }
    
    $newArray = merge_arrays($arrayAAA, $arrayBBB, $arrayCCC);
    

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 2023-03-18
      • 2015-09-11
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多