是否可以使用$ i在for循环中定义PHP变量?

时间:2013-12-18 07:23:57

标签: php variables dynamic

我希望做以下事情:

for ($i=0; $i<=$number_of_bundles; $i++) {

    $rug_size . $i = $_POST['Size' . $i];

}

不幸的是,这不起作用,因为我得到“未定义的索引”,当我尝试回声时,例如,$ rug_size1未定义。

这样的事情怎么办?

5 个答案:

答案 0 :(得分:3)

假设您将$rug_size初始化为array()

$rug_size[$i] = $_POST['Size' . $i];

如果你真的想使用不同的变量名(希望不是):

$vn = 'rug_size' . $i;
$$vn = $_POST['Size' . $i];

答案 1 :(得分:2)

你需要在{}内包装你的动态变量(和 Dot 的concat字符串),如:

<?php
$i = 1;
${"rug_size".$i} = "Hello world!";
echo $rug_size1;
?>

输出:

Hello world!

答案 2 :(得分:2)

schould的工作方式如下:

for ($i=0; $i<=$number_of_bundles; $i++) {
    $varname = 'rug_size'.$i;
    $$varname = $_POST['Size'.$i];
}

http://php.net/manual/en/language.variables.variable.php

答案 3 :(得分:0)

这样做。

for ($i=0; $i<=$number_of_bundles; $i++) {

    ${'rug_size' . $i} = $_POST['Size' . $i];
}

答案 4 :(得分:-1)

如果我没错,

$_POST['Size' , $i]

将是(即点而不是逗号)

$_POST['Size'. $i]

避免错误的另一种方法:使用isset()

for ($i=0; $i<=$number_of_bundles; $i++) {
if(isset($_POST['Size' . $i]))
 {
  $rug_size . $i = $_POST['Size' . $i];
 }
}