Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP合并并重新排列2个或更多数组_Php_Arrays_Multidimensional Array_Array Merge - Fatal编程技术网

PHP合并并重新排列2个或更多数组

PHP合并并重新排列2个或更多数组,php,arrays,multidimensional-array,array-merge,Php,Arrays,Multidimensional Array,Array Merge,foreach循环将产生2个或更多数组。像下面 array1 [0] => Array ( [0] => 1207 [1] => 4 [2] => haha.mp4 ) [1] => Array ( [0] => 1208 [1] => 4 [2

foreach循环将产生2个或更多数组。像下面

array1 
    [0] => Array
        (
            [0] => 1207
            [1] => 4
            [2] => haha.mp4
        )

    [1] => Array
        (
            [0] => 1208
            [1] => 4
            [2] => hehe.mp4
        )

array2
   [0] => Array
        (
            [0] => 1209
            [1] => 16
            [2] => SampleVideo.mp4
        )

    [1] => Array
        (
            [0] => 1210
            [1] => 16
            [2] => 295.mp4
        )
我想从这两个数组中得到相同的索引值,然后像这样合并这些数组

**FinalArray = array1[0],array2[0],array1[1],array2[1]** 
例如

请帮助获取相同的索引值并合并这两个数组。谢谢

$result = array_merge($array1, $array2);
print_r($result);
发件人:

发件人:

要获取元素顺序为array0[0],array1[0],array0[1],array1[1]的最终数组,首先计算$max_元素,然后执行嵌套循环,检查该数组中是否存在具有$i的元素:

$arrays = [$array0, $array1];
$max_elements = 0;
foreach($arrays as $array){
    $max_elements = max($max_elements, count($array));
}
$merged = []
for($i = 0; $i < $max_elements; $i++){
    foreach($arrays as $array){
        if($array[$i]){
            $merged[] = $array[$i];
        }
    }
}

要获取元素顺序为array0[0]、array1[0]、array0[1]的最终数组,array1[1]首先计算$max_元素,然后执行嵌套循环,检查该数组中是否存在具有$i的元素:

$arrays = [$array0, $array1];
$max_elements = 0;
foreach($arrays as $array){
    $max_elements = max($max_elements, count($array));
}
$merged = []
for($i = 0; $i < $max_elements; $i++){
    foreach($arrays as $array){
        if($array[$i]){
            $merged[] = $array[$i];
        }
    }
}

您可以通过使用和实现一个循环,如下所示

$array1 = array(
    0 => [0 => 1207, 1 => 4, 2 => "haha.mp4"],
    1 => [0 => 1208, 1 => 4, 2 => "hehe.mp4"],
);

$array2 = array(
    0 => [0 => 1209, 1 => 16, 2 => "SampleVideo.mp4"],
    1 => [0 => 1210, 1 => 16, 2 => "295.mp4"],
);

// here I assume that the following array is the output of your foreach loop
$array = [$array1, $array2];
$list = [];
foreach ($array as $key => $value) {
    $list = array_merge($list, array_column($array, $key));
}

print_r($list);

现场演示:

您只需使用和一个循环即可实现此目的,如下所示:

$array1 = array(
    0 => [0 => 1207, 1 => 4, 2 => "haha.mp4"],
    1 => [0 => 1208, 1 => 4, 2 => "hehe.mp4"],
);

$array2 = array(
    0 => [0 => 1209, 1 => 16, 2 => "SampleVideo.mp4"],
    1 => [0 => 1210, 1 => 16, 2 => "295.mp4"],
);

// here I assume that the following array is the output of your foreach loop
$array = [$array1, $array2];
$list = [];
foreach ($array as $key => $value) {
    $list = array_merge($list, array_column($array, $key));
}

print_r($list);

现场演示:

桑迪,我是来把你从胡说八道中解救出来的。此页上的所有方法都使用了太多的循环或太多的函数。最佳实践如下所示:

代码:

输出:

array (
  0 => 
  array (
    0 => 1207,
    1 => 4,
    2 => 'haha.mp4',
  ),
  1 => 
  array (
    0 => 1209,
    1 => 16,
    2 => 'SampleVideo.mp4',
  ),
  2 => 
  array (
    0 => 1208,
    1 => 4,
    2 => 'hehe.mp4',
  ),
  3 => 
  array (
    0 => 1210,
    1 => 16,
    2 => '295.mp4',
  ),
)

桑迪,我是来把你从胡说八道中解救出来的。此页上的所有方法都使用了太多的循环或太多的函数。最佳实践如下所示:

代码:

输出:

array (
  0 => 
  array (
    0 => 1207,
    1 => 4,
    2 => 'haha.mp4',
  ),
  1 => 
  array (
    0 => 1209,
    1 => 16,
    2 => 'SampleVideo.mp4',
  ),
  2 => 
  array (
    0 => 1208,
    1 => 4,
    2 => 'hehe.mp4',
  ),
  3 => 
  array (
    0 => 1210,
    1 => 16,
    2 => '295.mp4',
  ),
)

谢谢你的回答。我不想简单地合并这些数组。我想合并相同的索引值,如下所示。FinalArray=array1[0]、array2[0]、array1[1]、array2[1]然后我想您必须使用foreach$key=>$value循环它们并手动排列是的,我知道我的循环。但是每个$out需要是动态的$key=>$value{if$key==0{$room0=array\u merge$room0,$value;}if$key==1{$room1=array\u merge$room1,$value;}谢谢您的回答。我不想简单地合并这些数组。我想合并相同的索引值,如下所示。FinalArray=array1[0]、array2[0]、array1[1]、array2[1]然后我想您必须使用foreach$key=>$value循环它们并手动排列是的,我知道我的循环。但是需要是动态的foreach$out,因为$key=>$value{if$key==0{$room0=array\u merge$room0,$value;}if$key==1{$room1=array\u merge$room1,$value;}}放入foreach循环?放入foreach循环?