for($i=0;$i<$num;$i++) {
if($i==even) $hilite="hilite";
dothing($i,$hilite);
}
这基本上是我想要完成的。确定 $i 是否为偶数的最有效方法是什么?我知道我可以检查 half == mod 2 ...但这在计算上似乎有点过分?有没有更简单的方法?
如果 ($i % 2 == 0)
它没有比 $i % 2 == 0 更简单的了。期间。
已经提到的% 2
语法是最常用的,并且对于其他程序员来说最易读。如果您真的想避免计算的“开销”:
for($i = 0, $even = true; $i < $num; $i++, $even =! $even) {
if($even) $hilite = "hilite";
dothing($i,$hilite);
}
尽管分配本身可能比 '%2' (本质上只是一个位移)需要更多的工作。
将循环语句中的 i++ 更改为 i+=2,以便只检查 i 的偶数值?
通常,如果设置了 LSB(最低有效位),则该数字为奇数。您可以使用按位AND 运算符检查该位的状态:
if($testvar & 1){
// $testvar is odd
}else{
// $testvar is even
}
在上面的代码中,更有效的方法是$i
在每个循环中增加 2(假设您可以忽略奇数值):
for($i=0;$i<$num;$i+=2){
// $i will always be even!
}