我认为它工作正常,但你解释错了。你的价值是8。所以你的表达其实是:
if (8 !== 1 || 8 !== 8) {
// ...
}
你的第一个表达式是true,因为 8不等于1,所以你得到:You cannot do that!正如预期的那样。
您需要一个AND表达式 ( &&),因为您希望在值不是 1 AND不是 8 时显示错误消息。
看来您不太了解这里发生了什么,所以让我进一步解释一下。
让我们分别考虑1$o['statuss'] !== 1到$o['statuss'] !== 88 之间的所有数字。
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