セッションに保存されているいくつかの配列を使用しています。目的は、投稿されたメッセージの受信者を含む配列からオブジェクトを追加および削除できるようにすることです。正常に動作しているように見えますが、いくつかの癖があります。
このコードにより、オブジェクトを追加できます。
while($row = mysqli_fetch_array($result))
{
$contact = $row['contact'];
$userid = $row['userid'];
echo "<tr>";
echo "<td><a href='mypagepost.php?contact=$userid&recipient=$contact' STYLE='TEXT- DECORATION: NONE'><font color=#808080>" . $row['contact'] . "</a></font></td>";
echo "</tr>";
$contact_count++;
}
そして、これにより、それぞれの配列から削除するために別のページに送信することができます。
<?php
$isBefore = array();
foreach ($_SESSION['contactlist'] AS $key => $rec)
{
if (!in_array($rec, $isBefore)) {
$isBefore[] = $rec;
echo "<font color=#808080><a href='removerecipient.php?contact=" . $_SESSION['recipientlist'][$key] . "&recipient=$rec' STYLE='TEXT-DECORATION: NONE'>
<font color=#808080>" . $rec . " </a></font>";
}
}
?>
これは、次のページを参照しています。
unset($_SESSION['recipientlist'][array_search($contact, $_SESSION['recipientlist'])]);
unset($_SESSION['contactlist'][array_search($recipient, $_SESSION['contactlist'])]);
だから、私は配列を効果的に使用する方法を学び始めたばかりなので、鈍い質問を1つか2つすることを許してください。受信者を 1 回だけクリックして配列に追加すると、正常に動作します。連絡先リストの受信者を複数回クリックでき、アレイを使用して何度でも追加できることがわかりました (ただし、リストには出力されません)。名前をクリックして削除しようとすると、削除されるまで何度もクリックする必要があります。一度しか追加されず、それだけの状況を設定するにはどうすればよいですか? もう 1 つの質問は、配列からすべての受信者を削除した後も、値のないインデックス番号が残っているということです。両方のアレイの出力は次のようになります (これは、リストから 3 つの受信者を追加および削除した後です。
Array ( [3] => )
Array ( [3] => )
インデックスには値が関連付けられていないようです。これが何を意味するのかわかりません。