我无法动态地从$_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
答案 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 ......等变量。
(使用前缀是可选的,但如果您不使用它,恶意用户只需更改表单的输入名称即可操作脚本变量)