我正在循环中检查字符串是否等于另一个字符串。简单的东西。
然而,似乎我一直在添加要检查的字符串,并且有十个不同的字符串我正在检查每个循环。创建一个要检查的字符串数组更简单,然后执行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
差异可能微不足道,只是好奇以备将来参考。
答案 0 :(得分:6)
使用第一个。速度不会有太大差异,但可读性才是真正的差异。
CPU周期很便宜。程序员时间不是。
答案 1 :(得分:1)
内置函数总是更快,因为它们是编译的C代码。必须解释PHP代码。
如果你真的关心CPU周期,isset()是最快的,所以将可能的值设置为数组键将是最快的方法。当然,有CPU和内存使用,因此使用较少的系统资源取决于您要保存的资源。
正如@Kendall Frey所说,这是微优化,因此保持代码可读性并且不做任何有关优化的事情,除非探查器显示此代码对执行有很大影响。
答案 2 :(得分: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工作正常,但通常较慢,如果数组很大,可能会变得太慢。