2014-10-15 4 views
0

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

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

    $body = ''; 

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

    mail("[email protected]", "Email Received at [email protected]", $body); 

ответ

1

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

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

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

    mail("[email protected]", "Email Received at [email protected]", $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 protected]", "Email Received at [email protected]", $body); 
+0

Большое вам спасибо. Твоя жизнь. Я поставил | $ _POST = array_filter ($ _ POST); | после цикла foreach, а не раньше. –

0

Непосредственно перед петлей Еогеаспа вы должны использовать эту

$_POST = array_filter($_POST); 

Другой вариант заключается в использовании условного внутри цикл по каждому элементу

foreach($_POST as $key=>$value) 
    if ($value != '' && $value != null) 
     $body .= $key . ": " . $value . "\r\n"; 
Смежные вопросы