在循环中使用静态字符串和计数器变量声明变量[重复]

问题描述 投票:0回答:5

如何在 for 循环内创建可变变量?

这是循环:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {

}

在这个循环中,我想在每次通过时创建一个变量 $seat ,但它必须像这样递增。第一次通过时应该是

$seat1 = $_POST['seat' + $aantalZitjesBestellen]
,下次通过时:
$seat2 = $_POST['seat' + $aantalZitjesBestellen]
等等。

最后应该是:

$seat1 = $_POST['seat1'];
$seat2 = $_POST['seat2'];

等等。

变量和$_POST的内容应该是动态的。

php loops variables concatenation variable-variables
5个回答
6
投票

首先,除非我遗漏了什么,否则我会使用数组。拥有

$seat1
$seat2
等变量往往比使用数组的实用性要差得多,而且要麻烦得多。

话虽这么说,请使用以下语法:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
  $key = 'seat' . $counter;
  $$key = $_POST[$key];
}

最后,PHP 有一个内置函数,用于将数组键提取到符号表中:

extract()
。如果您将其与未经过滤的用户输入(例如
extract()
)一起使用,
$_POST
会存在巨大的潜在安全问题,因此请谨慎使用。


3
投票

这也有效:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
    ${'seat' . $counter} = $_POST['seat' . $counter];
}

2
投票

(为了清晰起见,进行了扩展 - 您可能能够写一行字)

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
    $varname = 'seat' . $counter;
    $$varname = $POST[$varname];
}

但是!你真的不应该这样做。 (如果你真的必须这样做,请参阅 cletus 的回答,了解内置的 PHP 方法 - 不过,这也被认为是不好的做法。)

重新考虑你的问题,看看数组是否可能是解决方案(我想它会的)。这将使检查(例如通过

var_dump()
)和迭代变得更容易,并且不会污染全局变量空间。


0
投票
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
   $name = 'seat' . $counter;
   $$name = $_POST['seat' . $counter];
}

建议使用数组,这样可以更方便地检查它们。


0
投票

您可以使用extract,但我不建议您这样做。

© www.soinside.com 2019 - 2024. All rights reserved.