首页 > 解决方案 > 组合动态数组

问题描述

我现在正在努力组合这两个数组。有人可以帮我用什么吗?

Array
(
  [1] => Array
    (
        [0] => 1-1
        [1] => 1-2
        [2] => 1-1
        [3] => 1-2
        [4] => 1-1
    )

  [3] => Array
    (
        [0] => 3-3
        [1] => 3-3
        [2] => 3-4
        [3] => 3-4
        [4] => 3-3
    )
)



Array[1] key [0] => 1-1 needs to combine with
Array[3] key [0] => 3-3
Array[1] key [1] => 1-2 needs to combine with
Array[3] key [1] => 3-3

结果将是:1-1,3-3 和 1-2,3-3

请注意,第一个数组 [1] 和 [3] 中的键可以是动态的。

我这样做了:

print_r(array_merge_recursive($optionWithValue[1], $optionWithValue[3]));

但是现在我有可以更改的 1 和 3 硬编码,我最终得到:

Array
(
  [0] => 1-1
  [1] => 1-2
  [2] => 1-1
  [3] => 1-2
  [4] => 1-1
  [5] => 3-3
  [6] => 3-3
  [7] => 3-4
  [8] => 3-4
  [9] => 3-3
)

所以这也不是我需要的

标签: phparrays

解决方案


如果数组中数组的键相同,则可以使用array_reduce

$arrays = [
    [
        "1-1",
        "1-2",
        "1-1",
        "1-2",
        "1-1",
    ],
    [
        "3-3",
        "3-3",
        "3-4",
        "3-4",
        "3-3",
    ],
];
$first = array_shift($arrays);
$res = array_reduce($arrays, function($carry, $item){
   foreach($item as $key => $value)  {
       $carry[$key] = $carry[$key] . "," . $value;
   }
   return $carry;
}, $first);

print_r($res);

结果

Array
(
    [0] => 1-1,3-3
    [1] => 1-2,3-3
    [2] => 1-1,3-4
    [3] => 1-2,3-4
    [4] => 1-1,3-3
)

php演示


推荐阅读