1

我正在循环检查一个字符串是否等于另一个字符串。容易的东西。

但是,似乎我一直在添加要检查的字符串,并且在每个循环中我都会检查十个不同的字符串。只需创建一个要检查的字符串数组,然后执行 in_array(); 就更容易编码,但我想知道哪个解析更快并使用更少的系统资源?

大批

$hideme  = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php",
     "style.css", "highlighter.css", "highlighter.js", "users");
if (!in_array($sub, $hideme)) {

字符串!=字符串

if ($sub != "." && $sub != ".." ...etc

差异可能可以忽略不计,只是好奇以备将来参考。

4

3 回答 3

6

使用第一个。速度上不会有太大差异,但可读性才是真正的区别。

CPU 周期很便宜。程序员的时间不是。

于 2012-05-19T13:58:48.293 回答
1

内置函数总是更快,因为它们是编译的 C 代码。必须解释 PHP 代码。

如果您真的关心 CPU 周期,isset() 是最快的,因此将可能的值设置为数组键将是最快的方法。当然,有 CPU 与内存的使用,因此使用较少的系统资源取决于您要节省哪些资源。

正如@Kendall Frey 所说,这是微优化,因此请保持代码可读性并且不要对优化做任何事情,除非分析器显示此代码对执行有很大影响。

于 2012-05-19T14:26:34.757 回答
0

如果你的 $hideme 数组变大,最简单的解决方案(也许是最快的)是使用 isset()。

$hideme  = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php",
 "style.css", "highlighter.css", "highlighter.js", "users");

if (!isset($hideme[$sub])) {
    // $sub is not in $hideme
}

对于小型数组, in_array 工作正常,但通常较慢,如果您的数组很大,可能会变得太慢。

于 2014-09-29T10:24:26.517 回答