我对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上的搜索似乎毫无结果。
答案 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');
我不建议使用变量变量,但如果你愿意,这就是怎么做的。