【问题标题】:merge two arrays, while maintaining the numeric keys合并两个数组,同时保持数字键
【发布时间】:2010-08-03 02:13:50
【问题描述】:

我试图将两个数组合并在一起。两者都有数字键并且是唯一的。当我使用 array_merge 时,它​​会从 0 开始重新索引。

所以说我有

[2] = abc
[5] = cde

我有

[32] = fge
[13] = def

我想将这两个合并在一起以保持唯一键。

下面是对当前合并行为的解释.. 有什么办法吗?

“如果所有的数组都只包含数字键,那么结果数组会被赋予从零开始递增的键。”

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    尝试使用+ 运算符。

    $one = array(2 => 'abc', 5 => 'cde');
    $two = array(32 => 'fge', 13 => 'def');
    $three = $one + $two;
    

    $three 现在应该如下所示:

    [2] = abc
    [5] = cde
    [32] = fge
    [13] = def
    

    【讨论】:

      【解决方案2】:

      如果您想将数组与数字键合并,请保留键并用第二个数组中的项覆盖第一个数组中的项:

      $a = array(0 => "a", 1 => "b"); 
      $b = array(1 => "c", 5 => "d"); 
      var_dump(array_diff_key($a, $b) + $b);
      

      将产生:

      array(3) {   
        [0]=>
        string(1) "a"
        [1]=>
        string(1) "c"
        [5]=>
        string(1) "d"
      }
      

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:
          $result = array(2 => 'abc', 5 => 'cde') + array(32 => 'fge', 13 => 'def');
          print_r($result);
          

          【讨论】:

            【解决方案5】:

            试试这个:

            $arr1 = array();
            $arr2 = array();
            $arrmerge = array();
            array_push($arr, $arr1, $arr2);
            

            $arr1 和 $arr2 将被合并并存储在 $arrmerge 中。你可以通过foreach访问它。

            希望它有效!

            【讨论】:

            • 其实不行,这会创建一个多维数组array($arr1, $arr2)
            猜你喜欢
            • 2022-11-11
            • 2015-12-27
            • 2014-05-08
            • 1970-01-01
            • 1970-01-01
            • 2014-04-01
            • 2014-05-22
            • 2019-07-18
            • 2016-12-14
            相关资源
            最近更新 更多