我强烈建议只使用,任何速度差异都可以忽略不计,但是单独测试每个变量的可读性是可怕的。in_array()
只是为了好玩,这是我运行的测试:
$array = array('test1', 'test2', 'test3', 'test4');
$var = 'test';
$iterations = 1000000;
$start = microtime(true);
for($i = 0; $i < $iterations; ++$i) {
if ($var != 'test1' && $var != 'test2' && $var != 'test3' && $var != 'test4') {}
}
$end = microtime(true);
print "Time1: ". ($end - $start)."<br />";
$start2 = microtime(true);
for($i = 0; $i < $iterations; ++$i) {
if (!in_array($var, $array) ) {}
}
$end2 = microtime(true);
print "Time2: ".($end2 - $start2)."<br />";
// Time1: 1.12536692619
// Time2: 1.57462596893
注意稍微微不足道的注意事项,如果未设置,则方法1需要更长的时间(取决于您测试的条件数)$var
更新的 PHP 版本:
Martijn:我把数组扩展到五个元素,并寻找,作为一种平均情况。test3
5.6 菲律宾比索
Time1: 0.20484399795532
Time2: 0.29854393005371
7.1 菲律宾比索
Time1: 0.064045906066895
Time2: 0.056781053543091
7.4 菲律宾比索
Time1: 0.048759937286377
Time2: 0.049691915512085
8.0 菲律宾比索
Time1: 0.045055150985718
Time2: 0.049431085586548
结论:最初的测试不是最好的测试,而且:在php7 +中已经成为一个偏好问题。