月別アーカイブ: 2015年9月

PHPでビット演算

仕事である情報を32ビットのフラグで持つ事になったので、
もちろんビット演算子「&」とか使いました。
その時のPHPでの注意点というか、他の言語だとあんまり起こらない現象に出会った時の話。

DBから取得した値とチェック対象の変数などとINT型のつもりで比較したとき・・・

この処理でTRUEになりませんでした。
両辺が文字列になっていたのが原因でした。
公式マニュアルには「両辺が文字列の場合、文字のASCII 値を使用し、結果も文字列になる」とあります。

とりあえず、PHPでビット演算する場合はintval()とか使って意図した型に変換してからやりましょうって話。
フレームワークやらライブラリやらで意図しない型になる場合がありますので。

 

検証ページつhttp://www.lv210.com/test_tool/test_bit_operation.php