假设我有两个数组:
$a1 = array(0,1,2);
$a2 = array(3,4,5);
Run Code Online (Sandbox Code Playgroud)
我希望能够进行交替数组的合并,而不是将它们连接起来.我想要这个结果:
array(0,3,1,4,2,5);
Run Code Online (Sandbox Code Playgroud)
是否存在本地方式来执行此操作,因为性能是一个问题,因为我需要这样做数千次
请注意,我知道我可以这样做:
for (var $i = 0; $i < count($a1); $i++) {
newArray[] = $a1[$i];
newArray[] = $b1[$i];
}
Run Code Online (Sandbox Code Playgroud)
如果有一个更快的,我正在寻找内置的方式
Dej*_*vic 10
$count = count($a1);
for ($i = 0; $i < $count; $i++) {
$newArray[] = $a1[$i];
$newArray[] = $b1[$i];
}
Run Code Online (Sandbox Code Playgroud)
我在这里的工作已经完成.
$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
Run Code Online (Sandbox Code Playgroud)
所以预先计数的数组大小将是~1/4 [引用需要](在freakin'100.000次迭代中你将总共获得0.2)更快.如果你把count()内部循环,它将重新计算每一个iteration.1/4在我看来相当快.如果您正在寻找编译功能,您可以停止.
PS Benchmark就像比基尼,它向你展示了一切,没有任何东西.