由于您正在“压缩”两个索引数组,因此您可以“转置和展平”。我希望这不会像使用for()
or那样快foreach()
,但是在小型输入数组上,性能不会有明显的拖累。换句话说,当寻求编码风格或最小声明变量时,应考虑以下技术。
代码:(演示)
$a1 = [0, 1, 2];
$a2 = [3, 4, 5];
var_export(
array_merge(...array_map(null, $a1, $a2))
);
输出:
array (
0 => 0,
1 => 3,
2 => 1,
3 => 4,
4 => 2,
5 => 5,
)
作为一种时髦的无函数方法,您可以$a1
从foreach()
值声明中推送值,在循环体内,您可以推送$a2
值。大饱眼福...(演示)
$result = [];
foreach ($a1 as $index => $result[]) {
$result[] = $a2[$index];
}
var_export($result);
// same output as earlier snippet
对于任何正在寻找关联安全技术的人,您可以进行循环切片或拼接调用。请注意,这splice()
将在过程中改变/消耗输入数组。(切片演示) (拼接演示)
$result = [];
for ($i = 0, $count = count($a1); $i < $count; ++$i) {
$result += array_slice($a1, $i, 1)
+ array_slice($a2, $i, 1);
}
或者
$result = [];
while($a1 && $a2) {
$result += array_splice($a1, 0, 1)
+ array_splice($a2, 0, 1);
}