2012-09-25 57 views
-1

我有很多不同的形式,我们的网站上有很多领域,我需要的信息。 我使用了一个名为$ fields的数组,并在提交时将表单发送给我的电子邮件。但是,我如何保留发送的空变量?我不喜欢所有的空白领域。排除空的数组变量,PHP

我知道我可以使用'如果'的声明,但我不想为每一个变量。

下面是一个示例,下面是完整代码的链接。

$fields = array(); 
    $fields["Name"]   = "\nName"; 
    $fields["email"]   = "\nEmail"; 
    $fields["Phone"]   = "\nPhone"; 
    $fields["WorkPhone"]  = "\nWork Phone"; 
    $fields["Address"]  = "\nStreet Address"; 
    $fields["City"]   = "City"; 
    $fields["State"]   = "State"; 
    $fields["Zip"]   = "Zip Code"; 
    $fields["Classification"] = "\nClassification"; 
    $fields["Ad-Headline"] = "\nHeadline"; 

下面是一个表单的完整脚本。 http://pastebin.com/W0xjNGmi

回答

2

变线38-41以

$body = "This Ad has been submitted:\n\n"; 
foreach ($fields as $a => $b) { 
    if(isset($_REQUEST[$a]) && !empty($_REQUEST[$a]))$body .= sprintf("%20s: %s\n", $b, $_REQUEST[$a]); 
} 

新线#40检查是否请求变量存在,不是空的,并追加到$身体

+0

嗯......这对我有意义,但现在它排除了所有变量。我剩下的只有我的标题“此表单已提交”。 – user1596138

+0

请发布您的新代码。 –

+0

'$ body =“此广告已提交:\ n \ n”; if(isset($ _ REQUEST [$ a])&&!empty($ _ REQUEST [$ a]))$ body。= sprintf(“%20s:%s \ n”,$ b,$ _REQUEST [$ a]); ' – user1596138

4

array_filter使用no callback参数调用将从数组中去掉空元素。

+0

我不确定在这种情况下如何使用array_filter会起作用,因为Josiah正在使用$ _REQUEST变量中出现的子集。 –

0

您还可以使用:

​​

OR

$null_free_array = array(); 

foreach($your_array as $array_element) 
{ 
    if(!empty($array_element)) $null_free_array[] = $array_element 
} 

这取决于你确切需要什么以及你想要检查什么,因为is_null不会阻塞空字符串,即“”但是空的。