我有两个数组,比如
$first =
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
$second =
Array
(
[0] => apples
[1] => organges
[2] => bananas
[3] => peaches
)
但是,我想通过索引将第二个数组元素推送到第一个数组中。 像
$result =
Array
(
[0] => 1
[1] => apples
[2] => 2
[3] => organges
[4] => 3
[5] => 4
[6] => peaches
[7] => 5
[8] => 6
)
不改变第一个元素的顺序。请帮助我
答案 0 :(得分:1)
你可以做一个简单的循环:
$result = [];
for($i=0; $i < count($first); $i++) {
if(isset($first[$i])){$result[] = $first[$i];}
if(isset($second[$i])){$result[] = $second[$i];}
}
如果您的数组具有可变大小,请首先比较它们的大小,然后使用更大的计数进行循环。
修改强>
然后考虑到你想要保存他们各自的顺序,但随机合并你可以扭曲前面代码的数组:
$result = [];
for($i=0; $i < count($first); $i++) {
if(rand(0,1)) {
if(isset($first[$i])){$result[] = $first[$i];}
if(isset($second[$i])){$result[] = $second[$i];}
} else {
if(isset($second[$i])){$result[] = $second[$i];}
if(isset($first[$i])){$result[] = $first[$i];}
}
}
我承认它非常奇怪和扭曲,我确信可以做出更优化的东西(它很快完成),但问题本身就是奇怪的xD 我希望它会有所帮助:)。
编辑2:
事实上,第一次编辑只会替换A / B,对于完整的随机解决方案,仍然尊重两个阵列的相应顺序:
$result = [];
$end=count($first) + count($second);
$a=0;
$b=0;
for($i=0; $i < $end; $i++ {
if(rand(0,1)) {
if(isset($first[$a])) {
$result[] = $first[$a];
$a++;
} elseif (isset($second[$b])) {
$result[] = $second[$b];
$b++;
}
} else {
if(isset($second[$b])) {
$result[] = $second[$b];
$b++;
} elseif (isset($first[$a])) {
$result[] = $first[$a];
$a++;
}
}
}