循环遍历$ _POST变量并使用PHP修改undefined

时间:2011-10-25 02:51:04

标签: php jquery ajax forms post

我想查看我的PHP $ _POST变量,并将"undefined"(由于jQuery如何发送它)的任何内容更改为""或至少" ",以便电子邮件表单已提交,但未填写任何值的"undefined"(可选字段)。

谢谢!

4 个答案:

答案 0 :(得分:3)

我建议你考虑更改你的javascript以更好地处理未定义,但是......

这是一种无循环方法:

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

还有一种更典型的使用单循环的方法:

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

注意:serialize + unserialize方法很酷,因为它不使用循环,但循环方法可能稍快一些,尤其是当$_POST很大时。

答案 1 :(得分: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=>
)

答案 2 :(得分:1)

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

答案 3 :(得分:0)

foreach ($_POST as &$var) {
    if ($var === 'undefined') {
        $var = '';
    }
}