排除空数组变量,PHP

时间:2012-09-25 17:25:16

标签: php arrays forms boolean

我的网站上有很多不同的表单,其中包含许多我需要信息的字段。 我使用了一个名为$ fields的数组,并在提交时将表单发送到我的电子邮箱。但是如何保持空变量不被发送?我不喜欢所有的空白字段。

我知道我可以使用'If'语句,但我不想每个变量。

以下是一个示例,完整代码链接如下。

    $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

3 个答案:

答案 0 :(得分:4)

没有回调参数调用的

array_filter将从数组中删除空元素。

答案 1 :(得分: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行检查请求变量是否存在,而不是空,并将其附加到$ body

答案 2 :(得分:0)

你也可以使用:

$null_free_array = array();

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

OR

$null_free_array = array();

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

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