PHP合并并重新排列2个或更多数组
foreach循环将产生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
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循环?