如何在 for 循环内创建可变变量?
这是循环:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
}
在这个循环中,我想在每次通过时创建一个变量 $seat ,但它必须像这样递增。第一次通过时应该是
$seat1 = $_POST['seat' + $aantalZitjesBestellen]
,下次通过时:$seat2 = $_POST['seat' + $aantalZitjesBestellen]
等等。
最后应该是:
$seat1 = $_POST['seat1'];
$seat2 = $_POST['seat2'];
等等。
变量和$_POST的内容应该是动态的。
首先,除非我遗漏了什么,否则我会使用数组。拥有
$seat1
、$seat2
等变量往往比使用数组的实用性要差得多,而且要麻烦得多。
话虽这么说,请使用以下语法:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
$key = 'seat' . $counter;
$$key = $_POST[$key];
}
extract()
。如果您将其与未经过滤的用户输入(例如 extract()
)一起使用,$_POST
会存在巨大的潜在安全问题,因此请谨慎使用。
这也有效:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
${'seat' . $counter} = $_POST['seat' . $counter];
}
(为了清晰起见,进行了扩展 - 您可能能够写一行字)
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
$varname = 'seat' . $counter;
$$varname = $POST[$varname];
}
但是!你真的不应该这样做。 (如果你真的必须这样做,请参阅 cletus 的回答,了解内置的 PHP 方法 - 不过,这也被认为是不好的做法。)
重新考虑你的问题,看看数组是否可能是解决方案(我想它会的)。这将使检查(例如通过
var_dump()
)和迭代变得更容易,并且不会污染全局变量空间。
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
$name = 'seat' . $counter;
$$name = $_POST['seat' . $counter];
}
建议使用数组,这样可以更方便地检查它们。
您可以使用extract,但我不建议您这样做。