这是更快:in_array()或PHP一堆前pressions的? [英] Which is faster: in_array() or a bunch of expressions in PHP?

查看:117
本文介绍了这是更快:in_array()或PHP一堆前pressions的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

时更快地做到以下几点:

Is it faster to do the following:

 if ($var != 'test1' && $var != 'test2' && $var != 'test3' && $var != 'test4') { ... }

或者

 if (!in_array($var, array('test1', 'test2', 'test3', 'test4') { ... }

有多个值,此时它的速度更快做一个或其他?

Is there a number of values at which point it's faster to do one or the other?

(在此情况下,在第二选项中使用的阵列不alreay存在。)

(In this case, the array used in the second option doesn't alreay exist.)

推荐答案

我强烈建议只使用 in_array(),任何速度差异可以忽略不计,但单独测试每个变量的可读性是可怕的。

i'd strongly suggest just using in_array(), any speed difference would be negligible, but the readability of testing each variable separately is horrible.

只是为了好玩这里有一个测试我跑:

just for fun here's a test i ran:

$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需要更长的时间(这取决于有多少条件你测试)

slightly trivial note to watch for, if $var is not set, method 1 takes much longer (depending on how many conditions you test)

这篇关于这是更快:in_array()或PHP一堆前pressions的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆