PHP IF和OR打破第二个OR

时间:2016-06-10 15:28:04

标签: php

我有一个循环,我用:

回显了项目的编号
$i = 1;
[content]
$i++;

在我的内容中,我试图根据$i

的值获得if语句
if ($user_id == 2 and $i != 1 || $i != 2 ) {

}

如果我遗漏这部分:|| $i != 2它可以正常运行,脚本失败并返回true。

我如何才能使用1和2值?

2 个答案:

答案 0 :(得分:1)

<强>概述

我使用&&代替and,并且总是用括号组织更复杂的IF语句以便

a)在美学上你可以看到解析顺序
  b)您可以手动设置解析顺序,特别是如果与PHP的优先级不同

<强>校正

话虽如此:

如果

,您希望触发条件
  1. $user_id2$i不是1,或
  2. $i不是2
  3. 所以你可以这样做:

    if( ($user_id == 2 && $i != 1) || ($i != 2) ){
        //...
    

    在这里,您可以看到两个命令通过将它们括在自己的括号中来分隔。

    <强>证明

    1. $i = 1$user_id = 1:第一个括号为false,第二个括号为true,条件触发
    2. $i = 1$user_id = 2:第一个括号为false,第二个括号为true,条件触发
    3. $i = 2$user_id = 1:第一个括号为false,第二个括号为false,条件不会触发
    4. $i = 2user_id = 2:第一个括号为true,第二个括号为false,条件触发

答案 1 :(得分:0)

你真正想要的是和操作员。

if ($user_id == 2 and $i != 1 and $i != 2 ) {
    ...
}

为了执行if块的内容,您需要满足所有这些条件,因此并且是您需要的运算符。