我正在尝试创建一个系统,根据用户是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;
}
答案 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; (和)你的情况