向数组中添加对象-覆盖而不是添加


Adding objects to an array - overwrites instead of adds

我正在研究一种方法,将联系人列表中的收件人添加到数组中,以便数组中的联系人可以用作消息中的收件人。我对数组的理解很好,可以基本使用,但有一个令人烦恼的问题。我的联系人列表是在一个列表中动态生成的;

{
$contact = $row['contact'];
echo "<tr>";
echo "<td><font color=#808080><a href='mypagepost.php?contact=$contact' STYLE='TEXT-  DECORATION: NONE'><font color=#808080>" . $row['contact'] . "</a></font></td>";
echo "</tr>";
}

因此,每个联系人都是可变的$contact。当你点击联系人时,它会将你带到mypagepost.php,在那里会发生这种情况;

$messagerecipient = array();
$contact = $_GET['contact'];
$messagerecipient[] = "$contact";

我可以打印出数组的内容,没问题。但是,每次添加新联系人时,都会覆盖[0]中的联系人。如果我手动添加带有子请求$messagereceiver条目的新联系人,如;

 $messagerecipient[] = "Confused";
 $messagerecipient[] = "Oh, man";

它可以很好地增加它们;数组([0]=>csmith[1]=>困惑的[2]=>哦,天哪)

但是,当我选择新联系人时,[0]将始终被覆盖。我想也许我需要将数组制作成一个会话,但它也做了同样的事情。有人能推荐一种方法吗?我需要将每个联系人添加到数组中以增加(最终,我将设置一些内容,允许我从数组中删除条目)。感谢您的帮助。

创建一个Session变量,比如$_SESSION['messagerecipient'];然后使用array_push 将值推送到该变量

例如:数组会话变量

此行:$messagerecipient = array();每次在添加联系人之前都将变量设置为空数组。$_SESSION在这里是正确的想法,但我猜您将这一行替换为在$_SESSION中创建空数组的一行,这将导致同样的问题。您需要先检查会话变量是否已设置,如果未设置,则创建它。这将在您第一次选择收件人时发生;随后的时间应该只通过$_SESSION['recipient'][] = $contact(或array_push,正如Shadowfax所提到的,这些都是等价的调用)添加到现有的时间中。否则,每次你都会将其重置为空。