到目前为止,答案是确定的。
isset在这种情况下使用速度更快,因为
- 它在键上使用O(1)哈希搜索,而
in_array
必须检查每个值,直到找到匹配项。 - 作为操作码,它比调用
in_array
内置函数的开销少。
这些可以通过使用具有值的数组(在下面的测试中为10,000)来证明,这需要进行
in_array更多的搜索。
isset: 0.009623in_array: 1.738441
通过填写一些随机值并偶尔查找数组中存在的值,以此建立了Jason的基准。都是随机的,所以要注意时间会波动。
$a = array();for ($i = 0; $i < 10000; ++$i) { $v = rand(1, 1000000); $a[$v] = $v;}echo "Size: ", count($a), PHP_EOL;$start = microtime( true );for ($i = 0; $i < 10000; ++$i) { isset($a[rand(1, 1000000)]);}$total_time = microtime( true ) - $start;echo "Total time: ", number_format($total_time, 6), PHP_EOL;$start = microtime( true );for ($i = 0; $i < 10000; ++$i) { in_array(rand(1, 1000000), $a);}$total_time = microtime( true ) - $start;echo "Total time: ", number_format($total_time, 6), PHP_EOL;


