合并 PHP 中的 3 个数组

Merging 3 arrays in 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] );
}

请帮我做一下。

只需对第一个数组进行 foreach,然后使用索引作为其他数组的键。

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

Remember this will only work if all 3 arrays are the same length, you might like to check that first

创建一个示例数组并使用相应的键推送到每个数组值

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

输出是

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;
}

您可以简单地使用 foreach 循环遍历第一个数组,然后访问相应的数组并将结果合并到一个大数组中。这仅在数组长度相同时才有效,因此值得在停止任何错误之前进行检查。像这样:

<?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.in - https://eval.in/833893

$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);