2012-11-21 87 views
0

我想創建一個系統,取決於用戶是什麼a)登錄或b)如果在數組中找到用戶名。我的if語句不會正確讀取'||'

如果你是在和人的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; 
} 
+0

你確定你不想''&&? – andrewsi

+2

你的問題聲稱你想檢查兩者是否都符合,所以你應該用&&代替||。 ||意味着如果滿足兩者中的任何一個,就希望它做些事情。 – EmmanuelG

+0

不,我想要它,所以如果會話匹配的id或你不在朋友數組 – user1840291

回答

5

問題是你已經錯誤地顛倒了布爾邏輯。

您開始使用這樣的表達式:(a() || b == c)並要反轉了。您假定!(a() || b == c)(!a() || b != c)相同,但這不是事實。據De Morgan's laws您需要更改||&&(!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選擇的用戶名時。

請注意,在描述您的問題時,您已使用單詞。這直接對應於運營商&&

0

我想你應該改變你|| (或)在你的條件& &(和)