Поведение =|

tan_81

Постоялец
Регистрация
18 Окт 2006
Сообщения
129
Реакции
30
Никогда не дружил с масками и битовыми сравнениями, поэтому встал в ступор.
Грубо говоря есть приложения, на которые у пользователя могут буть права на прямую и так же от группы т.е. имеем 2 точки присвоения этих прав с логическим | на сколько я понимаю.
Сейчас они обе реализованы как $hApplToMask[$uiIdAppl] |= $uiMask (такого сокращения я сколько не искал не нашел, но это работало на 4.2)
Закономерно PHP ругается на отсутствие некоторых индексов $hApplToMask[$uiIdAppl] т.к. они только формируются.

Правильно ли я понимаю, что это должно выглядеть с учетом этого логического | так:
$hApplToMask[$uiIdAppl]=isset($hApplToMask[$uiIdAppl])?$hApplToMask[$uiIdAppl] |= $uiMask:$hApplToMask[$uiIdAppl] = $uiMask

UPD. Попробовал, понял что быдлокод. Поправил так, но все равно что-то не то получается
$hApplToMask[$uiIdAppl]=isset($hApplToMask[$uiIdAppl])?$hApplToMask[$uiIdAppl] | $uiMask: $uiMask

UPD2. Все, заработало, результаты совпали. Правда почему так в итоге не понял. Просто присваивать маску нельзя, только так (0 | $uiMask), иначе при 2 сравнении бурда получается
$hApplToMask[$uiIdAppl]=isset($hApplToMask[$uiIdAppl])?$hApplToMask[$uiIdAppl] | $uiMask: 0 | $uiMask
 
Назад
Сверху