3

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

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

<?php

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

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

所以我的问题是:我如何遍历 $_POST 数组,如果 $value 为空,则将 $key=>$value 对的 $value 替换为“未输入”?

感谢您的任何帮助。

4

6 回答 6

0

似乎与:

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

这是一个 HTML 表单,它在提交时发布到自身。(我可能应该指出这一点......)。

于 2012-08-15T17:53:56.693 回答
0

您可以使用 php 函数来实现这一点array_map,如下所示,

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

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

于 2012-08-14T12:05:02.693 回答
0

Isset() 检查变量的值是否包括( False 、 0 或空字符串),但不包括 NULL。如果 var 存在,则返回 TRUE;否则为假。

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

<?php

    foreach ($_POST as $key => $value)
        {
            if(!isset($value))
                {
                    $_POST[$key] = "Not entered";
                }
        }
    ?>
于 2012-08-13T18:33:43.210 回答
0

尝试

<?php

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

?>

在中添加&to允许您修改内联值 http://php.net/manual/en/control-structures.foreach.php$valueforeach

但是,如果您使用 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';
}

?>

这样,如果姓名、地址或电子邮件中的任何一个为空,它们将被填写为“未输入”

于 2012-08-13T18:35:37.577 回答
0

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

一种替代方法是在表单提交时使用 Javascript 注入这些值。您可以执行以下操作:

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

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

于 2012-08-13T18:36:45.340 回答
0

空字段不会在 POST 中提交。

执行vardump($_POST)以查看提交了哪些字段。因此,您可以使用isset. 如果没有设置变量,那么你可以用它做任何你想做的事情。

if(!isset($_POST['foo'])) {
    // the field foo was empty
}
于 2012-08-13T18:36:53.253 回答