假设我有两个数组:
$a1 = array(0,1,2);
$a2 = array(3,4,5);
我希望能够进行交替数组的合并,而不是将它们连接起来。我想要这个结果:
array(0,3,1,4,2,5);
是否存在本地方式来执行此操作,因为性能是一个问题,因为我需要这样做数千次
请注意,我知道我可以这样做:
for (var $i = 0; $i < count($a1); $i++) {
newArray[] = $a1[$i];
newArray[] = $b1[$i];
}
如果有更快的话,我正在寻找一种内置方式
答案 0 :(得分:9)
$count = count($a1);
for ($i = 0; $i < $count; $i++) {
$newArray[] = $a1[$i];
$newArray[] = $b1[$i];
}
我的工作已经完成。
$a1 = array(0,1,2);
$a2 = array(3,4,5);
$start = microtime(TRUE);
for($t = 0; $t < 100000; $t++)
{
$newArray = array();
$count = count($a1);
for ($i = 0; $i < $count; $i++)
{
$newArray[] = $a1[$i];
$newArray[] = $a2[$i];
}
}
echo round(microtime(TRUE) - $start, 2); # 0.6
$a1 = array(0,1,2);
$a2 = array(3,4,5);
$start = microtime(TRUE);
for($t = 0; $t < 100000; $t++)
{
$newArray = array();
for ($i = 0; $i < count($a1); $i++)
{
$newArray[] = $a1[$i];
$newArray[] = $a2[$i];
}
}
echo round(microtime(TRUE) - $start, 2); # 0.85
所以预先计算的数组大小将是~1 / 4 [引用需要](在freakin&#39; 100.000次迭代中,你将获得总共0.2)更快。如果您将count()
置于循环内,则会在每个iteration
上重新计算。 1/4在我看来相当快。如果您正在寻找编译功能,可以停止。
P.S。基准就像比基尼,它向你展示了一切,没有任何东西。