我正在尝试创建一个包含预先存在的数组值的新数组。
<?php
$array1 = array(
0 => 101,
1 => 102,
2 => 121,
3 => 231,
4 => 232,
5 => 233
);
$array2 = array(
0 => 58,
1 => 98,
2 => 45,
3 => 48,
4 => 45,
5 => 85
);
$result = array();
请注意,第一个元素来自$array1
,第二个元素来自$array2
,依此类推。
非常感谢任何指针。
答案 0 :(得分:1)
您可以尝试使用for
或foreach
循环(如果$array1
和$array2
具有相同数量的具有相同索引的元素):
$result = array();
for($i = 0; $i < count($array1); $i++){
$result[] = $array1[$i];
$result[] = $array2[$i];
}
[]
为您提供了未指定索引的功能,因此您可以将它们从每个数组逐个推送到结果数组。
还有一种更直接的方法,而不用担心索引和元素丢失:
$i = 0;
foreach($array1 as $v){
$result[$i] = $v;
$i = $i+2;
}
$i = 1;
foreach($array2 as $v){
$result[$i] = $v;
$i = $i+2;
}
ksort($result);
它看起来有点麻烦,所以你可以编写一个函数来使它更优雅:
function build_array(&$array, $input, $counter){
foreach($input as $v){
$array[$counter] = $v;
$counter = $counter+2;
}
}
build_array($result, $array1, 0);
build_array($result, $array2, 1);
ksort($result);
答案 1 :(得分:1)
如何实现这一目标的示例:
$array = array(4,5,6);
$array2 = array(8,9,0,12,44,);
$count1 = count($array);
$count2 = count($array2);
$count = ($count1 > $count2) ? $count1 : $count2;
$rez = array();
for ($i = 0; $i < $count; $i++) {
if ($i < $count1) {
$rez[] = $array[$i];
}
if ($i < $count2) {
$rez[] = $array2[$i];
}
}
var_dump($rez);
结果将是一个数组
array(8) {
[0]=>
int(4)
[1]=>
int(8)
[2]=>
int(5)
[3]=>
int(9)
[4]=>
int(6)
[5]=>
int(0)
[6]=>
int(12)
[7]=>
int(44)
}
但如果你需要保存空值,你可以删除
这会检查if ($i < $count2)