Использование бинарного в MySQL и PHP для флагов

Допустим, у меня есть следующие флаги, которые можно прикрепить к клиенту:

1 Hot
2 Urgent
4 Sensitive
8 Confidential

В моей таблице я бы хранил активного клиента как целое число 6.

Я полагал, что такие действия спасут меня от справочной таблицы и сделают запросы быстрее.

Как мне заставить PHP интерпретировать 6 и, например, осветить клиента и активную иконку?

1

Решение

Побитовые операторы добьются цели:

$flag = 6; // value from the database
$customer = 2; // constant value
$active = 4; // constant value

if ($flag & $customer)
{
print 'I am a customer.';
}

if($flag & $active)
{
print 'I am active.';
}

Я согласен с @GordonLinoff, хотя. Подумайте, действительно ли это то, что вы хотите, потому что потом изменить непросто, и это может привести к неожиданным сценариям.

1

Другие решения

Других решений пока нет …