变量变量

时间:2010-08-24 09:20:04

标签: php

如何在for循环中创建变量?

这是循环:

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

}

在这个循环中我想为每次传递创建一个变量$ seat,但它必须增加如此。第一次通过它应该是$seat1 = $_POST['seat'+$aantalZitjesBestellen],下次通过时:$seat2 = $_POST['seat'+$aantalZitjesBestellen]依此类推。

所以最后它应该是:

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

等等。

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

5 个答案:

答案 0 :(得分:6)

首先,我会使用一个数组,除非我遗漏了一些东西。像$seat1$seat2等变量往往具有更少的实用性,并且比使用数组更加麻烦。

话虽如此,请使用以下语法:

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

最后,PHP有一个内置函数,用于将数组键提取到符号表中:extract()extract()如果您使用未经过滤的用户输入(例如$_POST),则存在巨大的潜在安全问题,因此请谨慎使用。

答案 1 :(得分:3)

这也可行:

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

答案 2 :(得分:2)

(为了清晰起见,扩展了 - 你可以能够做一行)

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

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

重新考虑你的问题,看看阵列是否可能是解决方案(我猜它会)。这将使检查(通过例如var_dump())和迭代更容易,并且不会污染全局变量空间。

答案 3 :(得分:0)

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

建议使用数组,因为您可以更轻松地检查它们。

答案 4 :(得分:0)

您可以使用extract,但我不建议您执行您要执行的操作。