PHP条件逻辑,具体顺序?

时间:2010-01-26 00:50:09

标签: php post conditional

我有条件陈述,因此:

if ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin")

但是,假设我也希望条件为使用“超级用户”类型(而不是“admin”)的用户评估true。

所以我可以写一下:

if ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser")

但是假设PHP从左到右读取条件和方程,那么即使“密码”和“重复”不相等,“超级用户”也可以使条件评估为真,因为我们放置了虚构的“&&”旁边两个操作数的括号,右边?

我可以添加括号来封装“||”的两个操作数,但我回想起我过去曾经尝试过一些东西,并且让它失败了。

有更好的方法吗?括号实际上是否有效(从而得出结论我的记忆有问题?[内存泄漏?嘿。])

谢谢!

4 个答案:

答案 0 :(得分:3)

是的,括号将覆盖&&的优先级高于||的事实。

答案 1 :(得分:0)

尚未测试但请尝试此操作:

if ($_POST['password'] == $_POST['repeat'] && 
($_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser"))

答案 2 :(得分:0)

将管理员签入()和“类型”检查包含在内。应首先检查超级用户是否有最佳代码。

($_SESSION['type'] == "superuser" || ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin") )

答案 3 :(得分:0)

为了得到你想要的东西:

if (($_POST['password'] == $_POST['repeat']) && ($_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser"))

当密码匹配且用户类型为admin或超级用户时,哪个会评估为真。

或者,更详细地说:

$valid_password= $_POST['password'] == $_POST['repeat'];
$valid_user= $_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser";
if ($valid_password && $valid_user)
 // Do something