2017-08-15 22 views
3

我有一个表单,用户可以点击一个按钮来添加尽可能多的partecipants,因为他需要。对于每个partecipant我有4个领域。当我点击按钮添加partecipants时,这些字段会自动添加一个脚本。该字段为[数据]创建的,所以我有这个在我的PHP文件发送电子邮件:array_chunk in email body 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 = <<<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

... 等等

我不能让它工作打算,并收到错误消息“数组到字符串转换”

我怎么能写代码获得它? 在此先感谢。

+4

想想'array_chunk'一样。它产生**数组**,例如'[['f1p1','f2p1','f3p1','f4p1'],['f1p2','f2p2','f3p2','f4p2']] ' – Phil

+0

感谢菲尔的建议;我已经尝试再次内爆$ altri = implode(“\ n
”,$ altri);但没办法......我真的不知道该怎么办;任何帮助将非常感激。 – DFD

回答

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> 
+0

感谢菲尔,这也是一个很好的解决方案! – DFD

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); 
} 
+0

非常感谢u_mulder,这是一个很好的解决方案! – DFD