管理添加和从数组中删除

时间:2013-09-05 02:19:50

标签: php arrays

我正在处理存储在会话中的几个数组。目的是能够从数组中添加和删除对象,这些对象将包含已发布消息的收件人。看起来工作正常,但有一些怪癖。

此代码允许添加对象;

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] => )

索引不会产生与它们相关的值,不知道这意味着什么。

1 个答案:

答案 0 :(得分:0)

您可以创建$_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中有$_POST,则$_GET将为<form method='get'