объединить два массива, стиль слияния-сортировки

Предположим, у меня два массива:

$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 [править] (на 10000 итераций freakin вы получите 0,2 в общей сложности) быстрее. Если вы поместите count() внутри цикла, он будет пересчитываться на каждой iteration . 1/4 мне кажется разумнее быстрее. Если вы ищете скомпилированную функцию, вы можете остановиться.

PS Benchmark похож на бикини, он показывает вам все, и ничего.