【问题标题】:Merging two array elements into one array element in PHP在PHP中将两个数组元素合并为一个数组元素
【发布时间】:2013-04-27 12:14:46
【问题描述】:

我想将两个数组合并成一个数组如下,

数组1:

Array
(
    [0] => Array
        (
            [id] => 3
            [sku] => KOG456
            [cart_id] => 2
            [name] => Young Money
            [slug] => young-money
            [route_id] => 47
            [description] => 
This is test song


            [excerpt] => 
            [saleprice] => 90.00
            [related_products] => 
            [images] => {"1c6b0883fc94c5f644497ec488cdf8cb":{"filename":"1c6b0883fc94c5f644497ec488cdf8cb.jpg","alt":"Test","caption":"","primary":true}}
            [seo_title] => 
            [meta] => 
            [enabled] => 1
        )

)

数组2:

Array
(
    [0] => Array
        (
            [filename] => Beethovens_Symphony_No._9_(Scherzo).wma
            [title] => Young Money
            [size] => 599.26
        )

)

预期的数组结果是:

Array
(
    [0] => Array
        (
            [id] => 3
            [sku] => KOG456
            [cart_id] => 2
            [name] => Young Money
            [slug] => young-money
            [route_id] => 47
            [description] => 
This is test song


            [excerpt] => 
            [saleprice] => 90.00
            [related_products] => 
            [images] => {"1c6b0883fc94c5f644497ec488cdf8cb":{"filename":"1c6b0883fc94c5f644497ec488cdf8cb.jpg","alt":"Test","caption":"","primary":true}}
            [seo_title] => 
            [meta] => 
            [enabled] => 1
            [filename] => Beethovens_Symphony_No._9_(Scherzo).wma
            [title] => Young Money
            [size] => 599.26
        )

)

如何将这些数组元素合并为一个数组元素?

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    foreach ($origArray as $key => &$subArray)
        $subArray += $arrayToBeAdded[$key];
    

    $origArray 是要合并到的数组,$arrayToBeAdded 是要合并到的数组。

    【讨论】:

    • 谢谢兄弟。我使用你的 foreach 循环得到了结果。
    • 嗨,我在 localhost 和 live 中都试过这个代码。它在本地主机中运行良好,但不能在现场运行。我收到此错误“致命错误:不支持的操作数类型”。如何解决这个错误兄弟?
    • @balajimca 你确定运算符是数组吗? (如果你有低于 PHP 5.3 的东西,请先升级)
    • 是的,运算符只是数组。我能知道这个操作数支持的 PHP 版本吗?我的实时服务器是 5.2.+ 版本,而不是 PHP 5.3。是否有任何替代解决方案可以在 5.2+ 版本中运行?
    • @balajimca 你为什么不简单地升级?不再支持 PHP 5.2... 但你可以 foreach ($origArray as $origKey => &$subArray) foreach ($arrayToBeAdded[$origKey] as $key => $val) $subArray[$key] = $val;
    【解决方案2】:

    用户array_merge_recursive():

    $final = array_merge_recursive($array1, $array2);
    

    【讨论】:

    • 它对我不起作用,兄弟。我想将结果作为一个数组元素。但它会合并数组并显示数组中的两个元素。
    • 递归的实际上与array_merge相反。好吧,这很奇怪。 :( 无论如何,我想你从另一个答案中得到了解决方案。太好了!:)
    【解决方案3】:

    试试这个鲜为人知的数组+ 运算符重载:

    $result = $array1[0] + $array2[0]
    

    【讨论】:

    • 这不会给出预期的输出兄弟。
    【解决方案4】:

    对于这个php有多种功能。您可以使用 $arrays = array_combine($array1, $array2);。

    PHP.net - array_combine

    希望对您有所帮助!

    【讨论】:

    • 每个数组的元素不相等。所以数组合并不会给出预期的结果兄弟。
    【解决方案5】:

    使用函数array_merge($array1[0], $array2[0]) 。以下是相同的示例

    $array1 = array(0=>array('1'=>1,'2'=>2,'3'=>3));
    
    $array2 = array(0=>array('4'=>4,'5'=>5,'6'=>6));
    
    $result[0] = array_merge($array1[0],$array2[0]);
    
    echo '<pre>';
    
    print_r($result);
    

    【讨论】:

      【解决方案6】:

      由于您有唯一的键,您可以使用像 + 运算符(联合)这样简单的东西...

      例如:

      $arr1 = [1=>'testing',2=>'stack',3=>'overflow'];
      $arr2 = [4=>'something',5=>'else',6=>'here'];
      $arr3 = $arr1 + $arr2;
      print_r($arr3);
      
      Results:
      Array ( [1] => testing [2] => stack [3] => overflow [4] => something [5] => else [6] => here )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 2013-09-26
        • 2013-11-08
        • 1970-01-01
        • 2014-06-16
        • 1970-01-01
        相关资源
        最近更新 更多