使用for循环动态声明变量

时间:2012-02-28 23:01:02

标签: php

我不确定它是不是一个好主意,但我只是认为使用for循环动态声明变量会更简单,更容易:

$val.$i = $row1[$i];。在尝试这个之后,这显然不是正确的事情。无论如何,我可以改进这一点,而不是声明单独的变量。

也许这会给出一个更清晰的画面:

for($i = 1; $i < 5; $i++) {
    $val.$i = $row1[$i];
 } 

现在我希望使用$val1来实现$val.$i

5 个答案:

答案 0 :(得分:5)

正如其他人发布的那样,使用关联或基于0的数组将是一个更好的实现,但您可以像使用PHP的变量变量名称一样实现解决方案:

for ($i = 1; $i <= 5; $i++) 
{
  ${"val".$i} = "this is value " . $i;
}    

echo "$val1<br />$val2<br />$val3<br />$val4<br />$val5";

将输出:

this is value 1
this is value 2
this is value 3
this is value 4
this is value 5

答案 1 :(得分:1)

在PHP中,您可以按名称定义变量。

示例:

$foo = 'bar';
$$foo = 'baz';
echo $bar; // echoes 'baz'

所以在你的情况下,它看起来像:

$var = 'val'.$i;
$$var = $arr[$i];

为什么你会这样做,我不知道。 更好的系统(imho)是使用list()构造:

list($val1, $val2, $val3) = $arr;

答案 2 :(得分:0)

您可以创建一个关联数组,然后使用extract

$arr = array();
// ...
$arr[$val.$i] = $row1[$i];
// ...
extract($arr);

请注意,首先使用数组可能会更好。

答案 3 :(得分:0)

我相信您正试图将您正在阅读的所有数据从数据库中提取到一个易于访问的位置。您需要做的就是将每一行推入一个数组:

$allTheThings[] = $row1;

你最终会得到一个二维数组,其中第一个键是行号,第二个键是列号。

答案 4 :(得分:0)

我没有全面了解您要做的事情,但是要将数组转换为对象,您可以这样做:

$val = (object) $row1;