我正在处理存储在会话中的几个数组。其目的是能够在数组中添加和删除对象,这些对象将包含已发布消息的收件人。它看起来运行良好,但有一些怪癖。
此代码允许添加对象;
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'])]);
所以,我才刚刚开始学习如何有效地使用数组,所以请原谅我问了一两个迟钝的问题。当我只点击一个收件人一次将其添加到数组中时,效果很好。我发现我可以多次点击联系人列表中的收件人,并且该阵列仍然允许他们一次又一次地添加(尽管它不会在列表中打印出来)。当我点击他们的名字来删除他们时,我必须一遍又一遍地点击他们,直到他们消失。我如何设置一个只添加一次的情况,仅此而已?我遇到的另一个问题是,在从数组中删除所有收件人之后,仍然会留下一个没有值的索引号。两个数组的打印结果都是这样的(这是在从列表中添加和删除三个收件人之后;
Array ( [3] => )
Array ( [3] => )
索引似乎没有一个与之相关的值,不知道这意味着什么。
您可以创建一个$_SESSION
并检查以查看
if(isset($_SESSION['nameHere'])){
//do your thing here
}
,或者制作一个类似的变量
$varName = 0;
以及当提交表格时
if(isset($_POST['submitButtonName'])){
if($varName === 0){
$varName = 1;
//do you thing here
}
}
如果您的HTML中有<form method='get'
,那么$_POST
就是$_GET
。