0

どのユーザーが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; 
}
4

2 に答える 2

5

問題は、ブール論理を正しく反転していないことです。

次のような式から始めて、(a() || b == c)それを反転させたいとします。!(a() || b == c)は と同じであると想定しましたが、(!a() || b != c)そうではありません。De Morgan の法則によると、||&&与えるように変更する必要があります(!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を取得して選択したユーザー名と等しくない場合にのみ表示したい。

問題を説明するときにandという単語を使用していることに注意してください。これは operator に直接対応します&&

于 2012-11-21T15:39:59.267 に答える
0

|| を変更する必要があると思います。(or) to && (and) あなたの状態で

于 2012-11-21T15:42:19.470 に答える