php - 合并两个大小相等的平面索引数组,以便以交替方式将值插入结果

标签 php arrays merge alternating

假设我有两个数组:

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

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

最佳答案

$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 [需要引用](在该死的 100.000 次迭代中,您将总共获得 0.2)更快。如果将 count() 放入循环中,它将在每次 iteration 时重新计数。 1/4 在我看来相当快。如果你正在寻找编译函数,你可以停止。

附言Benchmark 就像比基尼,它展示了一切,又什么都没有。

关于php - 合并两个大小相等的平面索引数组,以便以交替方式将值插入结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827451/

相关文章:

php - jquery传递两个数组并插入到一张表的不同字段中

xml - Scala 2.8.0中如何将二维数组写入xml

javascript - 检查 NaN 为真/假时出现问题

php - 从 AppEngine 中的 Laravel PHP 连接时出现 SQL 错误 'No such file or directory'

PHP MySQL 更新语句不接受除数值之外的任何内容

javascript - 如何在 JavaScript 中匹配二维数组中的对?

python - 在 Python 中实现不相交集系统

r - 在 R 中合并两个以上列表

mysql - 通过 Perl 合并两个 MySql 数据库(不是表)

php - 如何选择数据库服务器的默认排序规则值