我有一个文本文件,作为一个简单的数据库,每个条目跨越两行,如下所示:
name
number
bob
39
jack
22
jill
85
现在说我在数组中分隔了每一行,我想分析每个NAME并查看它是否等于变量。这样做会更快:
if($variable == $line) {
//true
}
或者首先过滤掉偶数行(名称),然后分析它们以查看它们是否等于变量?如果你不知道,下面的第一行基本上找到了计数的剩余部分(这是在一个foreach循环中)除以2,如果它等于0则它是偶数。
if ($count%2 == 0) {
if($variable == $line) {
//true
}
}
感谢。
答案 0 :(得分:1)
我肯定会根据“某些”情况选择第一种风格。例如,您认为您的平等运作需要多长时间?如果我看到整数或双打被比较,那么第一种风格对我来说似乎要好得多。
模数运算符在我的书中是一项昂贵的操作。如果你有一个巨大的数据库在做模数操作将花费很多时间。您可以尝试使用其他方法Reference更快地加快速度。
我希望您对上述代码进行时间研究,并了解自己的时间差异。当我使用modulo操作大约500万个数据集时,我遇到了一些与时间有关的重大问题。
根据其中一个答案进行编辑。
绝对使用已提供的+ = 2操作而不是模数以及第一种情况。
答案 1 :(得分:0)
第二个更快。对于这样的处理,假设计算时间可以忽略不计,而试验次数将更大程度地影响您的速度。在程序效率方面,这几乎总是如此。特别是与简单检查相比,例如两个if
语句与一个。{/ p>
答案 2 :(得分:0)
将第二个if
语句组合起来以获得更快的速度。
if($count%2==0 && $variable==$line) {
}
答案 3 :(得分:0)
我假设你有一个类似
的数组$lines = array('bob', '39', 'jack', '22', 'jill', '85');
然后只需跳过for
循环中的奇数行:
for ($i=0, $len=count($lines); $i<$len; $i+=2) {
if ($lines[$i] == $var) {
// true
}
}