2011-10-25 94 views
0

我想查看我的PHP $ _POST變量,並將"undefined"(因爲jQuery如何發送它)更改爲""或至少" ",以便當電子郵件表單被提交,它不說"undefined"價值沒有填寫(可選字段)。

謝謝!

+1

聽起來像你應該在jQuery中修復的東西。嘗試在嘗試使用它們之前嘗試定義變量。 – animuson

+1

我想說你應該修改你的Javascript腳本。 – deceze

+0

爲什麼你需要改變$ _POST-變量,改變「say」(輸出)。編輯REQUEST變量不是一個好主意。 –

回答

3

我建議你考慮改變你的JavaScript以更好地處理取消定義,但..

這裏是一個沒有循環的方法來做到這一點:

$_POST = unserialize(str_replace('s:9:"undefined";', 's:0:"";', serialize($_POST))); 

還有更典型的使用單個循環的方法如下:

foreach($_POST as &$p) if($p=='undefined') $p = ''; 

注意:serialize + unserialize方法很酷,因爲它不使用循環,但循環方法可能稍快,尤其是當$_POST較大時。

+0

哇。這是令人興奮的。我甚至不知道這是如何工作的:P但它的工作原理!謝謝。 – MadTurki

+0

@MadTurki很高興喜歡它! ..我們愛單行者不是我們。 – ghbarratt

+0

一個襯墊非常棒,但是您可能想要查看一下在每個頁面請求中調用'serialize'和'unserialize'的性能。使用'foreach'迭代值可能會更快,但我不能100%確定。 –

1

在PHP中,如果在foreach循環中使用&符號,它將使用它作爲引用而不是值。更改參考將設置原始值。

<?php 
$_POST['text1'] = 'undefined'; 
$_POST['text2'] = 'undefined'; 
foreach($_POST as &$var) 
{ 
    if($var == 'undefined') 
     $var = ''; 
} 
print_r($_POST); 
?> 
<!-- Will output --> 
array(
    text1=> 
    text2=> 
) 
0
foreach ($_POST as &$var) { 
    if ($var === 'undefined') { 
     $var = ''; 
    } 
} 
+0

這是重複的。 –

+0

@克萊格懷特:不好意思? – Hammerite

1
if (isset($_POST['var'])) { 
    // it is set 
} else { 
    // it isnt set 
}