2 回答
TA贡献1836条经验 获得超13个赞
将括号括在&&
测试是否设置特定变量以及该值是否符合条件的表达式周围。
if ((isset($_SESSION['role']) && $_SESSION['role'] > 3) || (isset($_SESSION['username']) && $_SESSION['username'] == $topic['author'])):
这些括号实际上并不是必需的,因为它们的&&
优先级高于||
. 但我建议在任何像这样的复杂条件下使用括号,以明确意图。
请注意,||
如果任一操作数为真,则条件为真。所以如果role > 3
,它会忽略第二个条件。如果username == author
,则忽略第一个条件。
如果您不想忽略任一条件,则应使用&&
而不是||
.
TA贡献1876条经验 获得超6个赞
它只会采用第一个条件并忽略第二个条件
当您有一个if堆叠多个条件的语句时
if (
-- condition 1 -- ||
-- condition 2 -- ||
-- etc --
) {
当条件首先通过时,它将进行进一步检查。
例如
如果我们有这个$posted数组
[
'user' => 'treybake',
'name' => null
]
并使用这个 if
if (
!empty($_POST['user']) && $_POST['user'] !== 0 ||
!empty($_POST['name'])
) {
echo 'hello, world';
}
我们将看到输出
你好,世界
这是因为检查$_POST['user']通过了。请记住,||是OR-他们既不必是真实的,只有一个能行得通。
如果要构建必需检查的条件,请使用&&( AND)。
但是,我实际上认为这种情况最好单独进行 if 检查 - 更易于阅读和维护,并且不太可能出错。
- 2 回答
- 0 关注
- 158 浏览
添加回答
举报