【问题标题】:How can I merge an array into the child level of another array (recursively)?如何将数组合并到另一个数组的子级别(递归)?
【发布时间】:2018-10-26 21:30:03
【问题描述】:

数组1:

array(1) {
  [0]=>
  array(2) {
    ["1234"]=>
    array(1) {
      ["fileName"]=>
      string(10) "monkey.jpg"
    }
    ["3456"]=>
    array(1) {
      ["fileName"]=>
      string(9) "horse.jpg"

    }
  }
}

数组2:

array(2) {
  ["number"]=>
  string(2) "62"
  ["company"]=>
  string(7) "animals"
}

我想将两个数组合并在一起:

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

这是结果:

array(3) {
  [0]=>
  array(2) {
    ["1234"]=>
        array(1) {
          ["fileName"]=>
          string(10) "monkey.jpg"
        }
     ["3456"]=>
        array(1) {
          ["fileName"]=>
          string(9) "horse.jpg"   
     }
  }
  ["number"]=>
  string(2) "62"
  ["company"]=>
  string(7) "animals"
}

但我真正需要的结果是这样的:

array(1) {
  [0]=>
  array(4) {
     ["1234"]=>
          array(1) {
         ["fileName"]=>
          string(10) "monkey.jpg"
         }
      ["3456"]=>
         array(1) {
            ["fileName"]=>
           string(9) "horse.jpg"   
         }
      ["number"]=>
      string(2) "62"
      ["company"]=>
      string(7) "animals"
  }
}

我怎样才能做到这一点?


我测试array_push 喜欢RaymondNijland 建议:

array_push($array1[0],$array2);

但现在$array1 看起来像这样:

array(1) {
  [0]=>
  array(3) {
    ["1234"]=>
     array(1) {
     ["fileName"]=>
      string(10) "monkey.jpg"
       }
    ["3456"]=>
       array(1) {
        ["fileName"]=>
        string(9) "horse.jpg"   
      }
    }
    [0]=>
    array(2) {
        ["number"]=>
         string(2) "62"
         ["company"]=>
         string(7) "animals"
    }
  }
}

仍然不是我想要的结果

【问题讨论】:

  • “我怎样才能做到这一点?”在我看来就像$array1[0][] = $array2array_push($array1[0], $array2) 一样简单
  • @RaymondNijland 我刚刚测试了你的建议,我的结果是int(3)。而已。我做错了什么?
  • 您应该提供实际的 PHP 代码,而不是一些看起来像 var_dump() 的输出
  • @RaymondNijland 我的代码是$result = array_push($array1[0], $array2)
  • var_dump($array1)array_push($array1[0], $array2) 之后然后你会看到 $array1 被改变了..

标签: php arrays multidimensional-array merge


【解决方案1】:
$array3 = $array1;
foreach ($array2 as $key => $value) {
  $array3[0][$key] = $value;
}

【讨论】:

    【解决方案2】:

    由于您要添加到现有数组,因此遍历新数组并添加其中的每个元素。

    下面是函数和用法示例:

    function array_merge_recursive_custom($array1, $array2){
        $result[] = $array1;
    
        foreach($array2 as $key=>$value){
            $result[0][$key] = $value;
        }
        return $result;
    }
    
    $array1 = ['1234' => ['fileName' => 'monkey.jpg'], '3456' => ['fileName' => 'horse.jpg']];
    $array2 = ['number' => '62', 'company' => 'animals'];
    
    $result = array_merge_recursive_custom($array1, $array2);
    
    var_dump($result);
    

    输出:

    array(1) {
      [0]=>
      array(4) {
        [1234]=>
        array(1) {
          ["fileName"]=>
          string(10) "monkey.jpg"
        }
        [3456]=>
        array(1) {
          ["fileName"]=>
          string(9) "horse.jpg"
        }
        ["number"]=>
        string(2) "62"
        ["company"]=>
        string(7) "animals"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2016-10-19
      • 2010-12-11
      • 1970-01-01
      • 2020-10-08
      • 2020-12-08
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多