array_chunk в теле письма Переполнение стека

У меня есть форма, где пользователь может нажать на кнопку, чтобы добавить столько компонентов, сколько ему нужно. Для каждого участника у меня есть 4 поля. Эти поля автоматически добавляются с помощью скрипта, когда я нажимаю кнопку для добавления компонентов. Поля создаются как [данные], поэтому у меня есть это в моем 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


так далее…

Я не могу заставить его работать как положено, и я получил сообщение об ошибке «Преобразование массива в строку»

Как я мог написать код для его получения?
Заранее спасибо.

3

Решение

Подумать о чем 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>
1

Другие решения

Вам нужно implode каждый кусок отдельно, а затем implode взорванные куски:

if( isset($postdata) ) {
$altri = [];
$chunks = array_chunk($postdata, 4, true);
foreach ($chunks as $chunk) {
$altri[] = implode('<br />', $chunk);
}

$altri = implode('<hr>', $altri);
}
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector