0

我正在尝试创建一个系统,该系统取决于 a) 登录的用户或 b) 如果在数组中找到用户名。

如果您已登录并在此人的friend_array 中,您应该会看到“取消好友”按钮。如果您在属于您自己的个人资料的页面上,则所有内容都将被隐藏 如果您不在您的页面上且不在数组中,则“添加朋友”。

“添加朋友”的语句必须错误地读取我的语句,因为我只希望它出现在您不在数组中并且 _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; 
}
4

2 回答 2

5

问题是您错误地反转了布尔逻辑。

您从这样的表达式开始:(a() || b == c)并且想要反转它。您假设这!(a() || b == c)与 相同(!a() || b != c),但事实并非如此。根据德摩根定律,你需要改变||&&给予(!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 选择的用户名时。

请注意,您在描述您的问题时使用了这个。这直接对应于操作符&&

于 2012-11-21T15:39:59.267 回答
0

我认为你应该改变你的|| (or) to && (and) 在你的情况下

于 2012-11-21T15:42:19.470 回答