を使用することを強くお勧めし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
が設定されていない場合$var
、メソッド 1 ははるかに時間がかかります (テストする条件の数によって異なります)。
新しい PHP バージョンの更新:
Martijn:平均的なケースとして、配列を5 つの要素に拡張し、 を探しました。test3
PHP5.6
Time1: 0.20484399795532
Time2: 0.29854393005371
PHP7.1
Time1: 0.064045906066895
Time2: 0.056781053543091
PHP7.4
Time1: 0.048759937286377
Time2: 0.049691915512085
PHP8.0
Time1: 0.045055150985718
Time2: 0.049431085586548
結論: 元のテストは最適なテストではありませんでした。さらに: php7+ では好みの問題になっています。