合并两个数组,合并排序样式

时间:2012-08-06 11:33:45

标签: php

假设我有两个数组:

$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];
}

如果有更快的话,我正在寻找一种内置方式

1 个答案:

答案 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。基准就像比基尼,它向你展示了一切,没有任何东西。