提问人:Trufa 提问时间:11/19/2010 更新时间:11/19/2010 访问量:409
PHP - for() 内部变量的变量或数组
PHP - Variable variables or array for variable inside for()
问:
我有这个代码,用 php 生成一个 HTML 表格:
<?php
include("numbers2.php");
echo '<table border="1">';
echo '<tr>';
for ($i = 1; $i <= 9; $i++) {
if($a1_pos_txt !== TRUE) {
echo "<td>" . $numbers["a" . $i . "_pos"] . "</td>";
} else {?>
<?php
echo '<td><input type="text" name="a' . $i . '_post" size="1" maxlength="1" /></td>';
?>
<?php } }?>
我需要做的是修改变量,以便在 foor 循环时我会得到它,而不是每次:$a1_post_txt
$a1_pos_txt
$a1_pos_txt
.
.
$a9_pos_txt
我基本上是我做了什么,但现在变量在另一个变量中,我不知道该怎么做。$numbers["a" . $i . "_pos"]
name="a' . $i . '_post"
我希望它足够清楚,如果没有,请要求任何需要的澄清。
提前致谢!!
答:
http://php.net/manual/en/function.eval.php
eval 函数将执行您想要的操作。
评论
我想你应该用数组替换你的单个变量。 我的意思是,而不是创造
$a 1_pos_txt ... $a 9_pos_txt
你应该有一个数组,你可以在其中使用类似的东西:
if($myVar[$i] !== true) {...}
你在哪里以及如何初始化你的标志变量?
查理
评论
您可以使用动态变量:
<?php
$test = 'a';
echo ${'test'};
?>
这将显示“a”。
因此,您可以将变量名称构建为字符串并获取其值!
评论
https://www.php.net/manual/en/language.variables.variable.php
变量变量将做你想做的事。
使用数组代替变量。在您的数组中将包含 true 或 flase 等值,这些值在 $a 1_pos_txt......$a 9_pos_txt 中较早
$arrOfValues[1] = TRUE;
$arrOfValues[2] = FALSE;
......
.....
...
$arrOfValues[9] = TRUE;
所以代码将如下所示
<?php
include("numbers2.php");
echo '<table border="1">';
echo '<tr>';
for ($i = 1; $i <= 9; $i++) {
if($arrOfValues[$i] !== TRUE) {
echo "<td>" . $numbers["a" . $i . "_pos"] . "</td>";
} else {?>
<?php
echo '<td><input type="text" name="a' . $i . '_post" size="1" maxlength="1" /></td>';
?>
评论
有人建议变量变量 -- 它们太糟糕了!不要使用它们!(它们会使您的代码非常难以阅读和维护,并有可能引入安全问题)。
其他人建议使用 - 绝对不要使用它!(在几乎所有可能的情况下,使用都被认为是非常糟糕的做法;它极有可能引入安全问题)eval()
eval
一些人建议使用数组而不是命名变量 - 这是正确的解决方案。
你已经用 做到了,那么你能用 post 变量做类似的事情吗?$numbers
如果它们与你所拥有的 HTML 代码相关,那么你可以将此代码更改为发布变量 - 如下所示:name="a' . $i . '_post"
name="a_post['.$i.']"
然后,您将有名为 and 等的 post 变量,而不是命名 和 等。然后,遍历它们变得非常容易,因为它们是一个数组。a1_post
a2_post
a_post[1]
a_post[2]
下一个:具有可变变量的意外行为
评论