用文本替换空表单字段

时间:2012-08-13 18:31:49

标签: php arrays forms

我有一个用户填写的表单,其内容将被发送到dompdf进行处理。如果用户选择来填写字段,我希望在整个表单中的任何空字段的结果pdf中通过“未输入”反映该字段。

我正在尝试更新字段,然后通过执行以下操作将它们发送到dompdf进行处理:

<?php

foreach ($_POST as $key => $value)
    {
        if(empty($value))
            {
                $_POST[$key] = "Not entered";
            }
    }
?>

但它不起作用。它只传递空的$ value(s)。

所以我的问题是:我如何遍历$ _POST数组,将$ key =&gt; $ value对的$值替换为“not entered”,如果$ value为空?

感谢您的帮助。

6 个答案:

答案 0 :(得分:0)

Isset()检查变量是否包含值(False,0或Empty string),但不是NULL。 如果var存在则返回TRUE;否则就错了。

另一方面,empty()函数检查变量是否为空值空字符串,0,NULL或False。如果var具有非空和非零值,则返回FALSE。

<?php

    foreach ($_POST as $key => $value)
        {
            if(!isset($value))
                {
                    $_POST[$key] = "Not entered";
                }
        }
    ?>

答案 1 :(得分:0)

尝试

<?php

foreach($_POST as &$value){
  if (empty($value)) $value = "Not entered";
}

?>

&中预先$valueforeach,可以修改内联值 http://php.net/manual/en/control-structures.foreach.php

但是,如果您使用HTML表单(表单标签/输入元素),那么表单将仅提交填充元素的数据

您可能希望在PHP中查看javascript解决方案或其他内容

<?php

if (empty($_POST['name'])) $_POST['name'] = "Not entered";

?>

请注意,必须手动提供密钥,因为它们实际上并不是请求的一部分

如果您有大量不应为空的键,请尝试

<?php

$notempty = Array('name', 'address', 'email');
foreach($notempty as $v){
  if(empty($_POST[$v])) $_POST[$v] = 'Not entered';
}

?>

这样,如果姓名,地址或电子邮件中的任何一个为空,则会填写&#34;未输入&#34;

答案 2 :(得分:0)

未提交空元素,这就是您在PHP代码中看不到任何内容的原因。

一种替代方法是在表单提交时使用Javascript注入这些值。你可以这样做:

<form onsubmit="return yourjsfunction();" />

JS函数可以收集没有输入任何值的所有输入元素,并将其valie设置为“Not entered”。然后它会调用form.submit();

答案 3 :(得分:0)

空字段不会在POST中提交。

执行vardump($_POST)以查看提交的字段。因此,您可以使用isset测试空字段。如果未设置变量,那么您可以随意使用它。

if(!isset($_POST['foo'])) {
    // the field foo was empty
}

答案 4 :(得分:0)

您可以使用php array_map函数实现此目的,如下所示,

$array = $_POST;
$array = array_map(function($val) { return isset($val) ?$val:'Not entered'; }, $array);

但这样做会让未来的程序员混淆它的来源。因此,将其分配给某个变量并将其发送到您想要的任何位置。

答案 5 :(得分:0)

似乎可以使用:

foreach ($_POST as $key => $val) {
    if (empty($val)) {
    $post -> $key = "not entered";
    }
    }

这是针对在提交时发布到自身的HTML表单。 (我可能应该指出......)。