|= 运算符有什么作用?

What does the |= operator do?

我在另一个问题中看到这个运算符|=,我想知道它的作用。它看起来像这样:

 $result |= (ord($safe[$i % $safeLen]) ^ ord($user[$i]));

只是一个组合运算符:assignment(=) and a OR operator(|)。等于:

$result = $result | (ord($safe[$i % $safeLen]) ^ ord($user[$i]));

按位或(包含)运算符|:

  a  |  b  |  result
---------------------
  0  |  0  |   0
  1  |  0  |   1
  0  |  1  |   1
  1  |  1  |   1

按位异或(异或)运算符^:

  a  |  b  |  result
---------------------
  0  |  0  |   0
  1  |  0  |   1
  0  |  1  |   1
  1  |  1  |   0