PHP中电子邮件正文的array_chunk函数

3

我有一个表单,用户可以点击按钮添加所需的任意数量的参与者。对于每个参与者,我有4个字段。当我点击添加参与者的按钮时,这些字段会自动添加到脚本中。这些字段被创建为[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个字段分组和分离,以获得像下面这样的内容:

  • field_1_participant_1
  • field_2_participant_1
  • field_3_participant_1
  • field_4_participant_1

分隔符

  • field_1_participant_2
  • field_2_participant_2
  • field_3_participant_2
  • field_4_participant_2

......等等......

我无法使其按预期工作,并收到“Array to string conversion”的错误消息。

我应该怎么编写代码才能获得想要的结果呢?提前感谢您的帮助。


4
想一想array_chunk函数的作用。它会生成一个由数组组成的大数组,例如 [ ['f1p1', 'f2p1', 'f3p1', 'f4p1'], ['f1p2', 'f2p2', 'f3p2', 'f4p2'] ] - Phil
感谢Phil的建议;我尝试了再次使用$altri = implode("\n <br>", $altri); 但是没有用... 我真的不知道该怎么办;任何帮助都将不胜感激。 - DFD
2个回答

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

想一想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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接