我有一个表单,用户可以单击按钮添加所需数量的partecipants。对于每个参与者,我有4个领域。当我单击按钮添加partecipants时,这些字段会自动添加脚本。这些字段被创建为[data]所以我在我的php文件中有这个发送电子邮件:
if(isset($_REQUEST['data'])){
$postdata = $_REQUEST['data'];
}
if( isset($postdata) ) {
$altri = implode('<hr>', array_chunk($postdata, 4, true));
}
else {
$altri = 'Non sono stati aggiunti altri partecipati a questa richiesta';
}
然后在我的$ body中我尝试将结果打印为:
$body = <<<EOD
<strong>Altri partecipanti:</strong><br>$altri<br>
// PHP email sender
mail($to, $sub, $body, $headers);
正如您所看到的,我尝试将电子邮件输出中的这4个字段分组并分开,以获得类似:
分离器
... 等...
我无法让它按预期工作,我收到错误消息&#34;数组到字符串转换&#34;
我怎样才能编写代码来获取它? 提前谢谢。
答案 0 :(得分:2)
您需要分别implode
每个块,然后implode
内爆块:
if( isset($postdata) ) {
$altri = [];
$chunks = array_chunk($postdata, 4, true);
foreach ($chunks as $chunk) {
$altri[] = implode('<br />', $chunk);
}
$altri = implode('<hr>', $altri);
}
答案 1 :(得分:1)
考虑一下array_chunk
的作用。它产生一个数组数组,例如
[ ['f1p1', 'f2p1', 'f3p1', 'f4p1'], ['f1p2', 'f2p2', 'f3p2', 'f4p2'] ]
尝试使用array_map
将内部数组转换为字符串。例如
$altri = implode('<hr>', array_map(function($list) {
return '<ul><li>' . implode('</li><li>', $list) . '</li></ul>';
}, array_chunk($postdata, 4)));
这会产生
<ul><li>f1p1</li><li>f2p1</li><li>f3p1</li><li>f4p1</li></ul><hr><ul><li>f1p2</li><li>f2p2</li><li>f3p2</li><li>f4p2</li></ul>