[PHP]AND演算子を使った奇数と偶数判定

今まで奇数と偶数判定は % 演算子を使用したものが一般的と思っていた。

$var = 1;
if ($var % 2 === 0) {
    echo '偶数';
} else {
    echo '奇数';
}

だが、PHPマニュアルのarray_filterの項目を見ていたら、見慣れない奇数・偶数判定をしている。

function odd($var)
{
    // 渡された整数が奇数かどうかを返します
    return($var & 1);
}

function even($var)
{
    // 渡された整数が偶数かどうかを返します
    return(!($var & 1));
}

この & で指定されている判定はビット単位のAND演算子で、値をビット毎に定数の1と比較しているらしい。またこっちの判定方法の方が%を使うよりも高速に動作するとのこと。

Odd and Even numbers (using & or %)

個人的には見慣れなかったので可読性は悪くなりそうだけど、AND演算子での指定も選択肢の一つとして留めておこうと思う。

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

five × 1 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください