我的if语句无法正确读取'||'

时间:2012-11-21 15:37:26

标签: php

我正在尝试创建一个系统,根据用户是a)登录,或b)如果在数组中找到用户名。

如果您已登录并在该人的friend_array中,您应该会看到“Unfriend”按钮。如果您在页面上是您自己的个人资料,那么一切都将被隐藏如果您不在您的页面上而不在数组中,则“添加好友”。

“添加好友”的声明必须正确读取我的声明,因为我只希望它出现在你不在数组中以及当_Session用户名不等于通过获取id而选择的用户名时。

    $cool = $_GET['id'];

    $evan = mysql_query("SELECT * FROM users WHERE username='{$_SESSION['user_login']}'");
    $joe1 = mysql_fetch_assoc($evan);

$cookie = mysql_query("SELECT * FROM users WHERE id='{$_GET['id']}'");
$joe = mysql_fetch_assoc($cookie);

$i = 0;
$berbs = $joe['username'];
error_reporting(E_ERROR | E_PARSE);

if (in_array($_SESSION['user_login'], $friendArray)) {
 $addAsFriend = '<input type="submit" name="removefriend" value="UnFriend">';
echo $addAsFriend;

}
error_reporting(E_ERROR | E_PARSE);

 if ($_GET['id'] == $joe1['id']) {
     $addAsFriend = '<input style="display:none;" type="submit" name="addfriend" value="Add Frimm1end">';
    echo $addAsFriend;

}
error_reporting(E_ERROR | E_PARSE);

if (!in_array($joe1['username'], $friendArray) || $_GET['id'] != $joe1['id']) {
     $addAsFriend = '<input type="submit" name="addfriend" value="Add Friend">';
     echo $addAsFriend; 
}

2 个答案:

答案 0 :(得分:5)

问题是您错误地颠倒了布尔逻辑。

你开始使用这样的表达式:(a() || b == c)并且你要反转它。您假设!(a() || b == c)(!a() || b != c)相同,但事实并非如此。根据{{​​3}},您需要将||更改为&&,并(!a() && b != c)

更正后的代码如下:

if (!in_array($joe1['username'], $friendArray) && $_GET['id'] != $joe1['id']) 

或者,您可以避免尝试在脑中执行布尔逻辑:

if (!(in_array($joe1['username'], $friendArray) || $_GET['id'] == $joe1['id']))

你也可以从你提出问题的方式中注意到你的错误:

  

我只希望当_Session用户名不等于通过获取ID而选择的用户名时,不在数组时出现。

请注意,在描述问题时您使用了一词。这直接对应于运算符&&

答案 1 :(得分:0)

我认为你应该改变你的|| (或)和&amp;&amp; (和)你的情况