我的网站上有很多不同的表单,其中包含许多我需要信息的字段。 我使用了一个名为$ 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
答案 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不会阻止空字符串,即“”但是空的。