如何基于索引合并多个数组

时间:2019-01-15 10:25:58

标签: php arrays loops sorting grouping

这真的很简单。 我只想合并

array(array1( a, b, c), array2(z,b,d),array3(1,2,3));

基于他们的位置,因此结果是

Array((a,z,1),(b,b,2),(c,d,3);

我尝试过的!!!!!!

 $titles= array();
 $i =0;
 foreach($movies as $movieAtt){
    while(count($movieAtt)<count($titles)){
   array_unshift($titles, $movieAtt[1]);
      }
    }

数组$ Movies具有3个数组。 array(title(1,2,3,4,5),year(,1,2,3,3),url(1,3,534,3))标题,年份和网址 我希望将每个数组的第一个元素放入一个新数组,然后继续。

我们在这里得到一个数组,该数组采用每个数组的第一个元素,并将其放入分组的新数组中。

2 个答案:

答案 0 :(得分:1)

function mergeArrays(...$arrays) {
    $result = [];
    foreach ($arrays as $arr) {
        $i = 0;
        foreach ($arr as $elem) {
            $result[$i][] = $elem;
            $i++;
        }
    }
    return $result;
}

$res = mergeArrays(['a', 'b', 'c'], ['z', 'b', 'd'], [1, 2, 3]);
print_r($res);

您将获得:

    Array
(
    [0] => Array
        (
            [0] => a
            [1] => z
            [2] => 1
        )

    [1] => Array
        (
            [0] => b
            [1] => b
            [2] => 2
        )

    [2] => Array
        (
            [0] => c
            [1] => d
            [2] => 3
        )

)

答案 1 :(得分:0)

您可以尝试以下方式

<?php
$a1 = ['a', 'b', 'c'];
$a2 = ['z', 'b', 'd'];
$a3 = [1, 2, 3];

$com = [$a2, $a3];
array_walk($a1, function (&$item, $key) use ($com) {
    $new_arr = [$item];
    $rest = array_map(function ($arr) use ($key) { return isset($arr[$key]) ? $arr[$key] : null; }, $com);
    $item = array_filter(array_merge($new_arr, $rest));
});

print '<pre>';
print_r($a1);