根据另一个变量的偶数/奇数状态更改变量?

时间:2010-07-21 19:41:57

标签: php modulo

for($i=0;$i<$num;$i++) {
  if($i==even) $hilite="hilite";
  dothing($i,$hilite);
}

这基本上就是我想要完成的事情。 确定$ i是否均匀的最有效方法是什么? 我知道我可以检查是否有一半== mod 2 ...但是这在计算上看起来有点过分了?有更简单的方法吗?

5 个答案:

答案 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!
}