for($i=0;$i<$num;$i++) {
if($i==even) $hilite="hilite";
dothing($i,$hilite);
}
这基本上就是我想要完成的事情。 确定$ i是否均匀的最有效方法是什么? 我知道我可以检查是否有一半== mod 2 ...但是这在计算上看起来有点过分了?有更简单的方法吗?
答案 0 :(得分:2)
if($ i%2 == 0)
答案 1 :(得分:1)
它没有比$ i%2 == 0更简单。期间。
答案 2 :(得分:1)
已经提到的% 2
语法最常用,对其他程序员来说最具可读性。如果你真的想避免计算的“开销”:
for($i = 0, $even = true; $i < $num; $i++, $even =! $even) {
if($even) $hilite = "hilite";
dothing($i,$hilite);
}
虽然赋值本身可能比'%2'(本质上只是一个位移)更有效。
答案 3 :(得分:0)
将循环语句中的i ++更改为i + = 2,这样你只能检查i的偶数值吗?
答案 4 :(得分:0)
通常,如果设置了LSB(最低有效位),则数字为奇数。您可以使用bitwise 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!
}