Удалить пустые поля в массиве после foreach в Stack Overflow

Я новичок в PHP. Это мой код из нашего mailing.php. Когда пользователь отправляет запрос, есть 5-7 полей для выбора и 20-25 полей, которые в итоге не выбираются. Вывод перечисляет все поля и значения независимо от того, являются ли они пустыми или были выбраны. Я понимаю, что мне нужно использовать либо unset или же array_filter, но не могу понять, как и где мне нужно вставить в код.

if($_POST && count($_POST)) {

$body = '';

foreach($_POST as $key=>$value)
$body .= $key . ": " . $value . "\r\n";

mail("email@email.com", "Email Received at email@email.com", $body);

0

Решение

Вы можете попробовать это

if($_POST && count($_POST)) {
$_POST = array_filter($_POST);
$body = '';

foreach($_POST as $key=>$value)
$body .= $key . ": " . $value . "\r\n";

mail("email@email.com", "Email Received at email@email.com", $body);

ИЛИ ЖЕ

if($_POST && count($_POST)) {
$body = '';
foreach($_POST as $key=>$value){
$trim_value = trim($value);
if (!empty($trim_value)){
$body .= $key . ": " . $value . "\r\n";
}

}
mail("email@email.com", "Email Received at email@email.com", $body);
2

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

Перед циклом foreach вы должны использовать это

$_POST = array_filter($_POST);

Другим вариантом является использование условного внутри цикла foreach

foreach($_POST as $key=>$value)
if ($value != '' && $value != null)
$body .= $key . ": " . $value . "\r\n";
0