我以前没有问题,但是现在似乎无法正常工作。我要从数组中创建值的变量,然后填充由表单提交的任何值,或者如果尚未提交,则为它们分配一个空值。
$ Fields数组,其中包含数据库列名,并通过查询自动生成,就像这样:
Array
(
[0] => ID
[1] => Name
[2] => EMail
[3] => Message
[4] => Site
)
,PHP代码为:
// Create variables from table columns and populate on post
foreach ($Fields as $key => $val) :
if (isset($_POST) && isset($_POST[$val])) :
$$key = $val;
$val = $_POST[$val];
else :
$$key = $val;
$val = "";
endif;
endforeach;
答案 0 :(得分:1)
如果您正在尝试根据选定的$_POST
元素的值设置一些变量,并且默认值为空,则只需执行以下操作:
$fields = ["ID", "Name", "Email", "Message", "Site"];
foreach ($fields as $field) {
$$field = $_POST[$field] ?? "";
}
但是可变变量不是经常使用的东西。最好只坚持从数组中调用它们。它使您的代码更清楚地知道值的来源。要设置默认值,可以在空数组上使用array_merge()
:
$fields = ["ID" => "", "Name" => "", "Email" => "", "Message" => "", "Site" => ""];
$posts = array_merge($fields, $_POST);
答案 1 :(得分:0)
在miken32的协助下,它现在可以正常工作,并且比我原来的冗长代码大大简化了:
// Create variables from table columns and populate on post
foreach ($Fields as $val) :
$$val = (isset($_POST[$val])) ? $_POST[$val] : "";
endforeach;
这将从列名数组中创建变量,并且当表单提交给自身时,只要表单字段的名称与列名匹配,它将选择发布值以使字段填充。 >
答案 2 :(得分:0)
我同意您应该坚持使用数组而不是创建变量变量,但是由于您仍在这样做,因此您知道需要哪些变量;您可以更改$Fields
:
$Fields = array("ID"=>"", "Name"=>"", "Email"=>"", "Message"=>"", "Site"=>"");
然后只需添加数组并提取:
extract($_POST + $Fields);