2012-09-25 126 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不會阻塞空字符串,即「」但是空的。