2012-11-21 118 views
0

我想创建一个系统,根据用户是什么登录或b)如果在数组中找到用户名。在if语句中创建一个'或'

如果您已经登录并且在该人的friend_array中,您应该看到'Unfriend'按钮。 如果你在你自己的个人资料页面上,一切都隐藏起来 如果你不在你的页面上,而不是在数组中,添加朋友。

解除好友关系似乎是工作,但它只是似乎是违约“添加好友”每当我在我的个人资料:

$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; 
} 
+8

我很惊讶它在做任何事情,在这里有'$ cool = $ _GET ['id];'。 – MrCode

+0

确保你没有在你的例子中引入类型。否则,人们会一直指出它(除非这是导致问题的原因)。 –

+4

什么是问题? – shadyyx

回答

2

!$_GET['id']很可能会一直评估为TRUE。下面的代码行:

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

可以阅读

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

你可能想

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

说明 PHP的动态类型转换将采取任何正整数或无丝竹空如果您尝试一个布尔表达式(如!$_GET['id']),则将它们评估为TRUE。如果TRUE == $joe1['id']有另一个布尔表达式测试,除非$joe1['id']为空,否则这将始终为真。

作为一个侧面说明,您可以通过使用相同和不相同的运算符(===和!==)阻止这种类型转换的发生。

if (false == 0) { 
    echo "This will be true"; 
} 

if (true == 1) { 
    echo "This will also be true"; 
} 

if (false === 0) { 
    echo "This will never echo"; 
} 

if (true === 1) { 
    echo "This will also never echo"; 
} 
+2

或跟随OP的逻辑:! 如果(in_array($ joe1 [ '用户名'],$ friendArray)||($ _ GET [ '身份证'] = = $ joe1 [ '身份证'])) – MortenSickel

+0

@MortenSickel,是的,这可能是他所要寻找的。说实话有点难。无论哪种情况,动态类型铸造都会让他陷入困境。 –

+0

+1用于解释。 –