为$ _POST指定不同的变量名称

时间:2014-09-28 18:00:55

标签: php arrays

我想为每个post值赋予递增变量名,并获取指定的变量和构建数组。以下是我试过的内容

$list = array();
$x = 0;
$prefix = '$var_';

foreach(array_slice($_POST, 1) as $test){
   $x++;
   $list[] = "{$prefix}{$x} = {$test};":
}

echo implode("  ", $list);

因此,如果我在帖子中有4个值,例如0, a, b, c,则会回显类似

的内容
$var_1 = a;  $var_2 = b;  $var_3 = c;

我想将所有三个$ vars放在数组中,如下所示,并使用它们的值。这是我被困的地方。有什么帮助吗?

$vars = array($var_1, $var_2, $var_3)

我想要实现的是将动态数据插入到我只知道table_name的表中,

 $stmt = $mydb->prepare($sql);//I am able to populate the $sql and $str
 $stmt->bind_param($str, $vars);
 $stmt->execute();

3 个答案:

答案 0 :(得分:1)

我相信您正在寻找extract()功能:

$list = array();
$prefix = 'var_';
$_POST = array("TEST",1,2,3,"XYZ"); // post example

$x = 0;
foreach(array_slice($_POST, 0) as $test) {
    $x++;
    $list[$prefix.$x] = "{$test}";
}
extract($list);
echo $var_1; // outputs TEST

// print_r($list);

/*
Array
(
    [var_1] => TEST
    [var_2] => 1
    [var_3] => 2
    [var_4] => 3
    [var_5] => XYZ
)
*/

*使用$_POST$_GET$_FILES等功能时,应格外小心。

答案 1 :(得分:0)

这样做的一种糟糕而肮脏的方式(没有安全性)

$list = implode("  ", $list);
eval($list)

现在,您已定义$ var_1,$ var_2。 :)

小心,eval是危险的,不要使用它。

答案 2 :(得分:0)

您可以使用列表实现第一部分:例如PHP Assign array to variables

您可以跳过所有这些并执行以下操作:

$vars = $_POST

并按原样使用数组(在执行此操作之前,您需要清理数据。

或者你可以从这些方法中选择: Fastest way to add prefix to array keys?

您还可以从表单发布数组(如果它是填充POST的表单),请参阅此帖子的答案Posting array from form

然后你可以这样做:

$vars = $_POST['data_array_name'];

(并对其进行消毒)