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

Я новичок в PHP. Это мой код из нашей рассылки mail.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); 

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

 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); 

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

 $_POST = array_filter($_POST); 

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

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