php
  • mysql
  • arrays
  • 2013-08-25 105 views 0 likes 
    0

    我正在处理将联系人列表中的收件人添加到数组的方式,以便可以将该数组的联系人用作邮件中的收件人。我理解阵列对于基本的使用来说足够了,但是有一个令人头痛的问题我的联系人列表是用列表动态生成的。将对象添加到数组中 - 覆盖而不是添加

    { 
    $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]中的联系人。如果我手动添加新的联系人与laterst $ messagerecipient条目,如;

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

    它增加它们就好了; Array([0] => csmith [1] => Confused [2] =>哦,人)

    但是当我选择一个新的联系人时,[0]总是被覆盖。我想也许我需要将数组放入一个会话中,但它也会做同样的事情。有人可以推荐一种方法来做到这一点?我需要每个添加到数组中的联系人增加(最终,我将设置一些东西,这将允许我从数组中删除条目)。任何帮助表示赞赏。

    +0

    与会议,你实际上是在正确的轨道上,因为它不覆盖,它只是增加。在此之前,该数组只是空的,因为脚本被调用一个新的时间,所以默认情况下所有的变量都是空的(最好:没有设置)。 – hakre

    回答

    2

    建立一个会话变量,比如$_SESSION['messagerecipient'];然后推值,以此变量,使用array_push

    Eg: array session variables

    +0

    它做同样的事情。喜欢这个? $ messagerecipient = array(); $ contact = $ _GET ['contact']; $ _SESSION ['recipientlist'] = $ messagerecipient; array_push($ _ SESSION ['recipientlist'],$ contact); array_push($ _ SESSION ['recipientlist'],$ contact); – Kimomaru

    +1

    在应用程序的开始声明会话变量,而不是一次又一次。这就是值不被追加的原因。你可以发布你的尝试会话变量 –

    +0

    $ _SESSION ['recipientlist'] = $ messagerecipient;在我的第二份申请表上处于我的申请的首位。你是说它应该在我的第一个表格上? – Kimomaru

    2

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

    相关问题