php的if语句与OR相等

时间:2014-10-20 21:57:40

标签: php session if-statement

我正在尝试写一个if stement

if(($result["from_id"] OR $result["to_id"]) == $_SESSION['user_id']) {
    //DO SOMETHING
}
else {
    // redirect
}

这是查明从某行获取的2列中的任何一列是否具有当前注册会话的相同值的正确方法。

这也可能吗?

if($result["from_id"] || $result["to_id"] == $_SESSION['user_id']) {
    //DO SOMETHING
}
else {
    // redirect
}

2 个答案:

答案 0 :(得分:0)

不,在php中,您必须执行以下操作:

if ( in_array( $_SESSION['user_id'], array($result["from_id"], $result["to_id"]) ) )

或为每个条件编写单独的比较(在这种情况下为2,in_array方法可以更好地扩展)。

如果结果来自mysql,您也可以直接使用IN

答案 1 :(得分:0)

如果设置了这些值,你的比较会评估为这样的......

if( (true || true) == $_SESSION['user_id']){ ... }

你需要具体比较......

if( $result["from_id"] == $_SESSION['user_id']|| $result["to_id"] == $_SESSION['user_id']){ ... }

所以你可以看到为什么第一套不会做你期望的。

但正如jeroen所说,您可能希望直接在查询中运行它。

SELECT * FROM `table` WHERE `from_id` = '$_SESSION['user_id']' OR `to_id` = '$_SESSION['user_id']'

除了明显地根据你正在使用的数据库界面正确地逃避这一点。