Каков правильный способ проверить, включено ли поле бит в php

Каков правильный способ проверить, включено ли поле бит – (в php)?

Я хочу проверить бит поле, которое приходит из db (mysql), если оно включено или нет.

это правильный путь?

if($bit & 1) 

Есть ли другие способы?

Я вижу код, который использует функцию ord () , это правильно?

например if(ord($bit) == 1)

Это правильный способ проверить, согласно руководству PHP .

Альтернативой может быть проверка вашего MySQL-запроса.

использование

 if( $bit & (1 << $n) ) { // do something } 

Где $nn-й бит, чтобы получить минус один (например, $n=0 для получения младшего значащего бита)

Это немного поздно, но может быть полезно для будущих посетителей на этот вопрос. Я сделал себе небольшую функцию, которая возвращает все биты, которые активны в определенном флаге.

 /** * Shows all active bits * * @param int $flag * @return array */ function bits($flag) { $setBits = array(); for ($i = 1; $i <= 32; $i++) { if ($flag & (1 << $i)) { $setBits[] = (1 << $i); } } // Sort array to order the bits sort($setBits); return $setBits; } echo "<pre>"; var_dump(bits(63)); echo "</pre>"; 

Чтобы получить правильный бит, используйте этот синтаксис:

 $bit & (1 << $n) 

Где $n – получить ( n +1) -ый наименее значащий бит. Таким образом, $n=0 даст вам первый младший бит.

я использую

 if (($flag & 0b010) == 0b010) { // here we know that the second bit (dec 2) is set in $flag }