【问题标题】:assign different variable name for $_POST为 $_POST 分配不同的变量名
【发布时间】:2014-11-23 03:14:03
【问题描述】:

我想为每个帖子值赋予递增的变量名称,并获取分配的变量并构建数组。以下是我尝试过的

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

【问题讨论】:

  • 我敢打赌你真的不想那样做。请解释您要达到的目标。几乎肯定有更好的方法。
  • @RiggsFolly 查看编辑。

标签: php arrays


【解决方案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等函数时应格外小心。

【讨论】:

    【解决方案2】:

    一种糟糕而肮脏的做法(没有安全性)

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

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

    注意,eval 很危险,不要使用它。

    【讨论】:

      【解决方案3】:

      您可以使用列表实现第一部分:如本例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'];
      

      (并对其进行消毒)

      【讨论】:

        猜你喜欢
        • 2012-07-31
        • 1970-01-01
        • 2016-08-15
        • 2018-10-20
        • 2018-03-28
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多