从表单上的$ _POST字段动态创建变量

时间:2014-06-09 15:59:21

标签: php post

我无法动态地从$_POST变量创建变量。

在表格上,我有一张桌子,供人们填写司机信息。该表最初有一行,但如果需要添加更多行,则用户按下按钮,添加新行,新行中的字段名称递增,即:driver1,driver2,driver3,driver4。

我正在尝试将其与我的PHP脚本匹配:

$count=1; 

while($count<=100) {
  $driver . string($count) = $_POST['driver . string($count)'];
  $count++;
} 

通常我会为每个$_POST变量创建一个新变量,但是在最多有100行的情况下,我想用循环来处理它。

我收到的错误是:

Fatal error: Can't use function return value in write context in C:\Inetpub\vhosts\host\httpdocs\process.php on line 11

3 个答案:

答案 0 :(得分:2)

不建议以编程方式生成变量。但是有可能:

${'driver'.$count}

$count=1; 

while($count<=100) {
  ${'driver'.$count} = $_POST['driver' . $count];
  $count++;
} 

有关动态变量的更多信息here


我会用数组来实现这个目的:

$driver[$count]=$_POST['driver'.$count];

然后你可以做

foreach ($driver as $count => $postValue){
    // $handling here
}

// OR to access a specific driver
$driver[$count];

答案 1 :(得分:1)

试试这个

<?php

$count=1; 

while($count<=100) {
  ${'driver' . $count} = $_POST['driver' . $count];
  $count++;
}

?>

由于$ count是一个数值,因此您不需要进行字符串转换。

我认为这可以帮助您改进代码Count the number of times a specific input is present in an form

答案 2 :(得分:0)

您可以使用extract将每个$_POST键映射到同名变量。

extract($_POST,EXTR_OVERWRITE,'prefix');

这将产生名为$ prefix_driver1,$ prefix_driver2 ......等变量。

(使用前缀是可选的,但如果您不使用它,恶意用户只需更改表单的输入名称即可操作脚本变量)