PHP没有像预期的那样添加到数组
所以,下面是我想要做的事情的概述,我正在跟踪参加活动的学生列表。该列表将与一些其他有关该事件的信息一起存储在变量中,并且该信息将作为电子邮件发送。PHP没有像预期的那样添加到数组
我试图让用户只需输入学生姓名作为[名字] [姓],每行一个。程序然后将整个textarea列表作为一个字符串,并用新的行字符分割。从这个新创建的列表中,它将按空格字符拆分每个项目,并将列表重新排列为[姓氏] [逗号] [名字],然后为了方便起见按字母顺序升序排列。
我有一个形式,我的HTML代码: <form action="submitted.php" method="post">
提交的资料会去我的剧本“submitted.php”,并使用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);
?>
的问题是,在电子邮件中,有更多的“新线”不是应该有。举例来说,如果我输入一些值到文本字段:
John Smith
Andy Jones
Sally Sue
名单按姓氏排序正确,但它似乎是这样的:
Jones, Andy
Smith
, John
Sue
, Sally
任何帮助表示赞赏,让我知道如果我需要澄清任何事情。
我无法复制报告的输出OP,但希望帮助简化代码,同时仍能获得理想的结果。
我使用关联数组使代码更简单,并删除了“lastName,firstName”的必要性。当然,您可以更改代码以使用该格式。
$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)
谢谢。我可以通过将其更改为HTML电子邮件而不是仅使用纯文本来解决问题。 – 2014-10-19 22:48:39
你在Windows上吗? – Qualcuno 2014-10-19 18:16:35
顺便说一下,不是循环$ newList来创建$ message,而是使用implode($ message,“\ n”) – Qualcuno 2014-10-19 18:17:46
不,我在Mac上,但是我可以尝试内爆并查看它是如何工作的。 – 2014-10-19 18:24:13