PHP中的多变量变量

时间:2011-04-25 19:06:26

标签: php

我对PHP和编程相当新...我试图使用foreach循环在我创建的页面上设置一些选项。这一切都有效,除了最后一节,我试图动态分配变量,所以我可以在循环外使用它们。

<?PHP

$array=array(foo, bar, baz);

foreach ($array as $option) {

  // I have if statements to determine what $option_req 
  // and $option_status end up being, they work correctly.

  $option_req="Hello";
  $option_status="World";

  $rh='Req_';
  $sh='Status_';

  $$rh.$$option=$option_req;
  $$sh.$$option=$option_status;

  }

echo "<br>R_Foo: ".$Req_foo;
echo "<br>S_Foo: ".$Status_foo;
echo "<br>R_Bar: ".$Req_bar;
echo "<br>S_Bar: ".$Status_bar;
echo "<br>R_Baz: ".$Req_baz;
echo "<br>S_Baz: ".$Status_baz;

?>

当循环结束时,现在这应该给我六个变量吗?

$Req_foo
$Status_foo

$Req_bar
$Status_bar

$Req_baz
$Status_baz

我已经玩过这一点了,今天Google上的搜索似乎毫无结果。

4 个答案:

答案 0 :(得分:3)

要访问某个数组项,只需访问一些数组项即可 不需要循环。

$req = array("foo" => 1, 
             "bar" => 2, 
             "baz" => 3,
             );
echo $req['foo'];

简单明了

答案 1 :(得分:1)

当您尝试执行任务时,看起来PHP不喜欢连接。事先尝试这样做,如下:

<?php

$array = array('foo', 'bar', 'baz');

foreach ($array as $option) 
{
    $option_req="Hello";
    $option_status="World";

    $rh = 'Req_';
    $sh = 'Status_';

    $r_opt = $rh.$option;
    $s_opt = $sh.$option;

    $$r_opt = $option_req;
    $$s_opt = $option_status;
}

echo "<br>R_Foo: ".$Req_foo;
echo "<br>S_Foo: ".$Status_foo;
echo "<br>R_Bar: ".$Req_bar;
echo "<br>S_Bar: ".$Status_bar;
echo "<br>R_Baz: ".$Req_baz;
echo "<br>S_Baz: ".$Status_baz;

正如其他评论者所说,这不是一个好习惯。尝试将数据存储在数组中,而不是仅使用变量来混淆命名空间。

答案 2 :(得分:1)

可以(虽然你不应该!):

${$rh.$option} = ...

答案 3 :(得分:0)

变量变量不起作用。你需要有一个包含字符串的变量。

$opt_r = $rh.$option;
$$opt_r = $option_req;

$opt_s = $sh.$option;
$$opt_s = $option_status;

另外,请务必引用您的字符串:

$array=array('foo', 'bar', 'baz');

我不建议使用变量变量,但如果你愿意,这就是怎么做的。