count($array)) $merge = array_slice($array, 0, $desiredLength - count($array)); $array = array_merge($array, $merge); $array = array_slice($array, 0, $desiredLength); } $duration = microtime(true)-$start; echo 'Alexander: ',$duration,"\n"; $start = microtime(true); for($n = 0; $n < 100000; $n++) { $newarray = array(); $i = 0; $oldarrayvalues = array("a", "b", "c", "d"); $oldarraysize = count($oldarrayvalues); if ( $oldarraysize ) { while ( count($newarray) < 71 ) { $newarray[] = $oldarrayvalues[$i]; $i++; $i %= $oldarraysize; } } } $duration = microtime(true)-$start; echo 'Hammerite: ',$duration,"\n"; function fill(array $initalArray, $toCount) { $initialArrayCount = count($initalArray); $fillUp = function(array $filledUpArray, $missingCount) use(&$fillUp, $initalArray, $initialArrayCount, $toCount) { if($missingCount <= 0) return array_slice($filledUpArray, 0, $toCount); return $fillUp(array_merge($filledUpArray, $initalArray), $missingCount - $initialArrayCount); }; return $fillUp($initalArray, $toCount - $initialArrayCount); } $start = microtime(true); for($i = 0; $i < 100000; $i++) { $filledArray = fill(array("a", "b", "c", "d"), 71); } $duration = microtime(true)-$start; echo 'Max: ',$duration,"\n"; $start = microtime(true); for($i = 0; $i < 100000; $i++) { $array = array('a', 'b', 'c', 'd'); $end = 71; $new_array = array(); while(count($new_array) <= $end) { foreach($array as $key => $value) { $new_array[] = $value; } } $new_array = array_slice($new_array, 0, $end); } $duration = microtime(true)-$start; echo 'Evert: ',$duration,"\n"; $start = microtime(true); for($i = 0; $i < 100000; $i++) { $size = 71; $array = array('a', 'b', 'c', 'd'); $temp = call_user_func_array('array_merge', array_fill(0, ceil($size/count($array)), $array)); while(count($temp) > $size) array_pop($temp); } $duration = microtime(true)-$start; echo 'Christoph: ',$duration,"\n"; echo 'Test took ',microtime(true)-$sum,'s';