我认为它工作正常,但你解释错了。你的价值是8。所以你的表达其实是:
if (8 !== 1 || 8 !== 8) {
// ...
}
你的第一个表达式是true
,因为 8不等于1,所以你得到:You cannot do that!
正如预期的那样。
您需要一个AND表达式 ( &&
),因为您希望在值不是 1 AND不是 8 时显示错误消息。
看来您不太了解这里发生了什么,所以让我进一步解释一下。
让我们分别考虑1$o['statuss'] !== 1
到$o['statuss'] !== 8
8 之间的所有数字。
1 !== 1
=> false
, 1 !== 8
=> true
: 因为1 !== 8
你会看到消息。
2 !== 1
=> true
, 2 !== 8
=> true
: 因为2 !== 1
你会看到消息。
3 !== 1
=> true
, 3 !== 8
=> true
: 因为3 !== 1
你会看到消息。
4 !== 1
=> true
, 4 !== 8
=> true
: 因为4 !== 1
你会看到消息。
5 !== 1
=> true
, 5 !== 8
=> true
: 因为5 !== 1
你会看到消息。
6 !== 1
=> true
, 6 !== 8
=> true
: 因为6 !== 1
你会看到消息。
7 !== 1
=> true
, 7 !== 8
=> true
: 因为7 !== 1
你会看到消息。
8 !== 1
=> true
, 8 !== 8
=> false
: 因为8 !== 1
你会看到消息。
你看,你永远不会真正进入else
分支(或者至少,跳过if
分支)。
现在,如果您使用AND运算符,我们也这样做:
1 !== 1
=> false
, 1 !== 8
=> true
:您不会看到该消息,因为并非所有条件都满足true
2 !== 1
=> true
, 2 !== 8
=> true
:您将看到该消息,因为它们都是true
.
3 !== 1
=> true
, 3 !== 8
=> true
:您将看到该消息,因为它们都是true
.
4 !== 1
=> true
, 4 !== 8
=> true
:您将看到该消息,因为它们都是true
.
5 !== 1
=> true
, 5 !== 8
=> true
:您将看到该消息,因为它们都是true
.
6 !== 1
=> true
, 6 !== 8
=> true
:您将看到该消息,因为它们都是true
.
7 !== 1
=> true
, 7 !== 8
=> true
:您将看到该消息,因为它们都是true
.
8 !== 1
=> true
, 8 !== 8
=> false
:您不会看到该消息,因为并非所有条件都满足true