PHP 合并并重新排列 2 个或更多数组
PHP merge and rearrange 2 or more arrays
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]**
例如
FinalArray
[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
)
请帮助如何获得相同的索引值并合并这 2 个数组。谢谢
$result = array_merge($array1, $array2);
print_r($result);
要获取元素顺序为 array0[0],array1[0],array0[1],array1[1]
的 finalArray,首先计算 $max_elements
,然后执行嵌套循环,检查数组中是否存在具有 $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];
}
}
}
你可以通过使用 array_column and array_merge 的一个循环来实现这一点,如下所示,
$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);
sandy,我是来救你的。此页面上的所有方法都使用了过多的循环或过多的函数。最佳做法如下所示:
代码:(Demo)
$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"],
);
foreach($array1 as $k=>$v){
$result[]=$v;
// if $array2 always has a matching key:
$result[]=$array2[$k];
// if it is possible that $array2 doesn't have a matching key:
// if(isset($array2[$k]){$result[]=$array2[$k];}
//... if you have more arrays to include, just repeat like: $result[]=$array3[$k];
}
var_export($result);
输出:
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',
),
)
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]**
例如
FinalArray
[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
)
请帮助如何获得相同的索引值并合并这 2 个数组。谢谢
$result = array_merge($array1, $array2);
print_r($result);
要获取元素顺序为 array0[0],array1[0],array0[1],array1[1]
的 finalArray,首先计算 $max_elements
,然后执行嵌套循环,检查数组中是否存在具有 $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];
}
}
}
你可以通过使用 array_column and array_merge 的一个循环来实现这一点,如下所示,
$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);
sandy,我是来救你的。此页面上的所有方法都使用了过多的循环或过多的函数。最佳做法如下所示:
代码:(Demo)
$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"],
);
foreach($array1 as $k=>$v){
$result[]=$v;
// if $array2 always has a matching key:
$result[]=$array2[$k];
// if it is possible that $array2 doesn't have a matching key:
// if(isset($array2[$k]){$result[]=$array2[$k];}
//... if you have more arrays to include, just repeat like: $result[]=$array3[$k];
}
var_export($result);
输出:
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',
),
)