Объединение 3 массивов в PHP

у меня есть 3 массива, как показано ниже.

$array1 = Array
(
    [0] => 05/01
    [1] => 05/02
)

$array2 =Array
(
    [0] => ED
    [1] => P
)

$array3 =Array
(
    [0] => Mon
    [1] => Tue

)

Я хочу, чтобы объединить эти 3 массива, как показано ниже $result_array. Я написал код, как показано ниже. Но он дал пустой массив.

$result_array =Array
(
    [0] => Array
        (
            [0] => 05/01
            [1] => ED
            [2] => Mon
        )
    [1] => Array
        (
            [0] => 05/02
            [1] => P
            [2] => Tue
        )
)

код:

for($z=0; $z<count($array1); $z++){
    $all_array[$z][] = array_merge($array1[$z],$array2[$z] );
    $all_array2[$z] = array_merge($all_array[$z],$array3[$z] );
}

пожалуйста, помогите мне сделать это.

6 ответов


просто foreach над первым массивом и использовать индекс в качестве ключа к другим массивам.

foreach ( $array1 as $idx => $val ) {
    $all_array[] = [ $val, $array2[$idx], $array3[$idx] ];
}

помните, что это будет работать, только если все 3 массива имеют одинаковую длину, вы можете проверить это сначала


вы можете просто пройти через первый массив с циклом foreach, затем получить доступ к соответствующим массивам и объединить результаты в один большой массив. Это будет работать только в том случае, если массивы имеют одинаковую длину, поэтому стоит проверить это, чтобы остановить любые ошибки. Что-то вроде этого:--2-->

<?php
$arr1 = ['05/01', '05/02'];
$arr2 = ['ED', 'P'];
$arr3 = ['Mon', 'Tue'];

$combined = [];
if (count($arr1) != count($arr2) || count($arr1) != count($arr3))
  die("Array lengths do not match!");

foreach ($arr1 as $key => $val) {
    $combined[] = [$val, $arr2[$key], $arr3[$key]];
}

var_dump($combined);

вы можете увидеть eval.в этой работе здесь -https://eval.in/833893


создайте образец массива и нажмите на каждое значение массива с соответствующим ключом

$sample = array();
for($z=0; $z<count($array1); $z++){
    $sample[]=array($array1[$z],$array2[$z],$array3[$z]);
}
print_r($sample);

Out put is

Array ( [0] => Array ( 
               [0] => 05/01 
               [1] => ED 
               [2] => Mon 
        ) 
        [1] => Array ( 
               [0] => 05/02 
               [1] => P 
               [2] => Tue 
        ) 
)

function merge($file_name, $titles, $description)
 {
    $result = array();
    foreach($file_name as $key=>$name )
    {
      $result[] = array( 'file_name' => $name, 'title' => $titles[$key], 
     'description' => $description[ $key ] );
    }
    return $result;
}

$array1 = Array
(
    '05/01',
    '05/02'
);

    $array2 = Array
(
    'ED',
    'P'
);

$array3 =Array
(
    'Mon',
    'Tue'
);
$result_array = array();
foreach ($array1 as $key=>$val)
{
    $result_array[$key] = array($array1[$key],$array2[$key],$array3[$key]);
}
echo "<PRE>"; print_r($result_array);

эта работа для n массивов и динамической длины массива

function mergeArrays(...$arrays)
{

    $length = count($arrays[0]);
    $result = [];
    for ($i=0;$i<$length;$i++)
    {
        $temp = [];
        foreach ($arrays as $array)
            $temp[] = $array[$i];

        $result[] = $temp;
    }

    return $result;

}

$x = mergeArrays(['05/01' , '05/02'] , ['ED' , 'P'] , ['Mon' , 'Tus']);
$y = mergeArrays(['05/01' , '05/02' , 'X'] , ['ED' , 'P' , 'Y'] , ['Mon' , 'Tus' , 'Z'] , ['A' , 'B' , 'C']);

var_dump($x);
var_dump($y);