Как объединить несколько массивов на основе индекса - PullRequest
0 голосов
/ 15 января 2019

Это действительно просто. Я просто хочу слить

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)) Название, Год, URL Я хочу, чтобы первый элемент каждого массива помещался в новый массив, а затем продолжался.

Где мы получаем массив, который берет первый элемент каждого массива и помещает его в новый массив, сгруппированный.

Ответы [ 2 ]

0 голосов
/ 15 января 2019
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
        )

)
0 голосов
/ 15 января 2019

Вы можете попробовать следующий способ

<?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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...