Я видел этого оператора |=
в другом вопросе и мне стало интересно, что он делает. Это выглядит так:
$result |= (ord($safe[$i % $safeLen]) ^ ord($user[$i]));
Это просто комбинированный оператор: назначение (=
) и Оператор ИЛИ (|
). Это так же, как:
$result = $result | (ord($safe[$i % $safeLen]) ^ ord($user[$i]));
Побитовый оператор ИЛИ (включительно) |
:
a | b | result
---------------------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 1
Побитовый XOR (эксклюзивный) оператор ^
:
a | b | result
---------------------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 0
Других решений пока нет …