为变量创建和填充值

时间:2018-11-08 18:43:29

标签: php variables

我以前没有问题,但是现在似乎无法正常工作。我要从数组中创建值的变量,然后填充由表单提交的任何值,或者如果尚未提交,则为它们分配一个空值。

$ 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;

3 个答案:

答案 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);