猿问

PHP:如何组合逻辑运算符

我已经在一个网站上工作了一段时间,现在我主要在论坛上工作。在这里,我必须告诉 php 在某些条件下显示什么和不显示什么。


我为此使用 IF,我也可以使用它,但是代码在我这样做的方式中变得混乱(堆叠 IF)。


当我尝试组合逻辑运算符时,它不起作用。我知道你需要用括号做一些事情,但在这种情况下我不确定它们应该放在哪里。


if (

    isset($_SESSION['role']) && $_SESSION['role'] > 3 || 

    isset($_SESSION['username']) && $_SESSION['username'] == $topic['author']

):

它只会采用第一个条件并忽略第二个条件


慕尼黑5688855
浏览 159回答 2
2回答

开心每一天1111

将括号括在&&测试是否设置特定变量以及该值是否符合条件的表达式周围。if ((isset($_SESSION['role']) && $_SESSION['role'] > 3) ||      (isset($_SESSION['username']) && $_SESSION['username'] == $topic['author'])):这些括号实际上并不是必需的,因为它们的&&优先级高于||. 但我建议在任何像这样的复杂条件下使用括号,以明确意图。请注意,||如果任一操作数为真,则条件为真。所以如果role > 3,它会忽略第二个条件。如果username == author,则忽略第一个条件。如果您不想忽略任一条件,则应使用&&而不是||.

HUX布斯

它只会采用第一个条件并忽略第二个条件当您有一个if堆叠多个条件的语句时if (    -- condition 1 -- ||    -- condition 2 -- ||    -- etc --) {当条件首先通过时,它将进行进一步检查。例如如果我们有这个$posted数组[    'user' => 'treybake',    'name' => null]并使用这个 ifif (    !empty($_POST['user']) && $_POST['user'] !== 0 ||     !empty($_POST['name'])) {    echo 'hello, world';}我们将看到输出你好,世界这是因为检查$_POST['user']通过了。请记住,||是OR-他们既不必是真实的,只有一个能行得通。如果要构建必需检查的条件,请使用&&( AND)。但是,我实际上认为这种情况最好单独进行 if 检查 - 更易于阅读和维护,并且不太可能出错。
随时随地看视频慕课网APP
我要回答