<?php
function all_equal1($arr, $value) {
return array_keys(array_flip($arr)) == array($value);
}
function all_equal2($arr, $value) {
return array_unique($arr) == array($value);
}
function all_equal3($arr, $value) {
foreach($arr as $v) {
if($value != $v) { return false; }
}
return true;
}
function all_equal4($arr, $value) {
return count(array_filter($arr, function($x) use($value) { return $x == $value; })) == count($arr);
}
$value = 'no_prices';
$arr = array_fill(0, 1000, $value);
$funcs = array(
'array_flip' => all_equal1,
'array_unique' => all_equal2,
'foreach' => all_equal3,
'array_filter' => all_equal4
);
$trials = 1000;
foreach($funcs as $name => $func) {
$timetot = 0;
for($i = 0; $i < $trials; $i++) {
$time1 = microtime(true);
$func($arr, 'no_prices');
$timetot += microtime(true) - $time1;
}
printf("%12s: %.8f seconds\n", $name, $timetot);
}