PHP没有按预期添加到数组

时间:2014-10-19 18:13:51

标签: php html forms

所以,这里是我想要做的事情的概述,我正在跟踪参加活动的学生名单。该列表将存储在变量中以及有关该事件的一些其他信息,并且该信息将作为电子邮件发送。

我正在努力使用户只需输入学生姓名作为[名字] [姓],每行一个。然后程序将整个textarea列表作为一个字符串,并用新行字符拆分。从这个新创建的列表中,它将按空格字符拆分每个项目,并将列表重新排列为[lastname] [逗号] [firstname],然后将其按字母顺序升序排序。

我的HTML代码中有一个表单: <form action="submitted.php" method="post">

提交的信息将转到我的脚本&#34; submitted.php&#34;并使用POST方法。

在表单中我有一个textarea<textarea id="studentList" name="stuList"></textarea>

这是我的PHP代码:

<?php
    /* get some other variables first */
    $msg = ""; // holds the entire email message body

    /* get the values from the textarea */
    $list = $_POST["stuList"]; // use the 'name' attribute on the textarea

    // split the student list
        $list = explode("\n", $list);
        $newList = array();

        for($i = 0; $i < count($list); $i++) {
            $arr = explode(" ", $list[$i]);

            $fName = $arr[0];
            $lName = $arr[1];

            $newList[] = $lName . ", " . $fName;
        }


        sort($newList);

        for($i = 0; $i < count($newList); $i++) {
            $msg .= ($newList[$i] . "\n");
        }

        mail($toAddr, $subject, $msg, $fromAddr);
?>

问题是,在电子邮件中,还有更多&#34;新行&#34;比应该有的。例如,如果我在文本字段中输入一些值:

John Smith
Andy Jones
Sally Sue

列表按姓氏正确排序,但显示如下:

Jones, Andy
Smith
, John
Sue
, Sally

如果有任何帮助,请告诉我是否需要澄清任何内容。

1 个答案:

答案 0 :(得分:0)

我无法复制报告的输出OP,但希望在获得所需结果的同时帮助简化代码。

我使用关联数组使代码更简单,并且删除了使用&#34; lastName,firstName&#34;的必要性。当然,您可以更改代码以使用该格式。

$list = $_POST["stuList"];
$list = explode("\n", $list);
$newList = array();

foreach ($list as $item) {
    $nameParts = explode(" ", $item);
    $newList[$nameParts[1]] = $item;
}

ksort($newList);

$msg = implode(",\n", $newList)