我有一个用户填写的表单,其内容将被发送到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为空?
感谢您的帮助。
答案 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";
}
?>
在&
中预先$value
到foreach
,可以修改内联值
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表单。 (我可能应该指出......)。