Это может быть действительно глупый вопрос, но он только что пришёл мне в голову, и я подумал, что было бы интересно узнать наверняка ....
Итак, вот сценарий:
У пользователей есть 3 варианта для каждого дня недели: AM, PM и OFF. Это взаимоисключающие варианты, поэтому нет возможности работать и в AM, и в PM в один и тот же день.
Так что, если я хотел сохранить их AM-сдвиги и PM-сдвиги как отдельные битовые маски, а User1 выбирает следующее:
S M T W Th F Sa
A P X A X P A
У меня было бы следующее:
$shifts['User1']['AM'] = 73; // 1001001
$shifts['User1']['PM'] = 34; // 0100010
Теперь, если бы я просто хотел узнать, в какие дни работал User1, я бы, очевидно, мог просто сделать:
$shifts['User1']['All'] = $shifts['User1']['AM'] | $shifts['User1']['PM'];
Или даже просто:
$shifts['User1']['All'] = $shifts['User1']['AM'] + $shifts['User1']['PM'];
Но что, если бы я хотел, чтобы конечный результат отличал AM от PM, что-то вроде:
$shifts['User1']['AM'] = A00A00A;
$shifts['User1']['PM'] = 0P000P0;
Так что A и P оба считаются установленными, но это
A00A00A | 0P000P0 = AP0A0PA;
Есть ли общий способ сделать это, или я думаю об этом совершенно неправильно?