2017-01-01 116 views
0

我有3個輸入框功能爲鑄造「」爲NULL

<input type="text" name="first"> 
<input type="text" name="second"> 
<input type="text" name="third"> 

,我需要的後端,將改變PHP函數/施放輸入字段設置爲NULL,如果用戶不輸入什麼也沒有。

這就是我做了,但它太複雜了:

if ($first == ""){ 
    $first = NULL; 
} 

if ($second == ""){ 
    $second = NULL; 
} 

if ($third == ""){ 
    $third = NULL; 
} 

所以,問題是可以這樣做的所有功能於一體,更簡單?

喜歡的東西:

如果有任何字段爲空字符串「」,然後設置字段設置爲NULL。

+0

也許'函數set_null($測試){ 返回空($測試)? $ test:NULL; }'? – chris85

+0

你在問什麼,這有點違背PHP的本質。但你可以用一個簡單的函數來完成。 – Xorifelse

+0

我在這裏學習......我願意接受任何建議,所以如果你能解釋給我或展示....? – lewis4u

回答

0

嘗試使用此代碼:

function isEmpty($dato){ 
    if(empty($dato)){ 
     $dato=NULL; 
    } 
    return $dato; 
} 
+4

重新定義現有函數? – Xorifelse

+0

這看起來不錯 – lewis4u

+4

它不起作用。 'is_null()'是一個函數編譯.. – Xorifelse

1

如果使用PHP7你可以嘗試這樣的:

function checkIsEmpty(string &...$strings) { 
    foreach ($strings as &$string) { 
     if (empty($string)) { 
      $string = NULL; 
     } 
    } 
} 


checkIsEmpty($a, $b, $c); 

這將全部替換爲空字符串爲NULL。

另外,使用PHP5:

function checkIsEmpty($string) { 
    return (empty($string) ? NULL : $string); 
} 

我張貼這不僅是因爲重新定義is_null()是不是最好的主意,即使是3條額外的線路沒有考慮到。任何長於1個內襯的空間都會浪費空間以實現如此簡單的功能。

+0

儘管接受的解決方案有效(如果函數名稱已更改),但這個實際上應該是可接受的解決方案。 – bugfroggy

+1

謝謝,但接受的解決方案無法工作。首先,我們不能重新定義'is_null()'。其次,他錯過了'dato = NULL'的美元符號;' –

+0

我甚至沒有注意到缺失的美元符號哈哈,但我的意思是,如果函數被重命名,它的工作原理。它的做法太麻煩了。 – bugfroggy

1

看起來你處理表單輸入所以也許這樣的事情是你想要什麼:

$_POST = array_map($_POST, function($v) { return $v == '' ? NULL : $v;}) 
+0

是的,這將是最好的一個,如果100%的領域可以在數據庫中爲null。 –