我有这个代码用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 } }?>
我需要做的是修改$a1_post_txt
变量,以便在我每次获取foor循环而不是$a1_pos_txt
时:
$a1_pos_txt
.
.
$a9_pos_txt
我基本上是用$numbers["a" . $i . "_pos"]
和name="a' . $i . '_post"
做的,但现在变量在另一个变量中,我不知道如何做到这一点。
我希望它足够清楚,如果没有请求任何澄清。
提前致谢!!
答案 0 :(得分:2)
而不是变量使用数组。在你的数组中将包含像true或flase这样的值,这些值在$ a1_pos_txt中更早...... $ a9_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>';
?>
答案 1 :(得分:1)
您可以使用动态变量:
<?php
$test = 'a';
echo ${'test'};
?>
这将显示“a”。
因此,您可以将变量名称构建为字符串并获取其值!
答案 2 :(得分:1)
有人建议变量变量 - 它们太糟糕了!不要使用它们! (它们可能使您的代码非常难以阅读和维护,并且可能会引入安全问题)。
其他人建议使用eval()
- 绝对不要使用!! (使用eval
在几乎所有可能的情况下被认为是非常糟糕的做法; 很可能引入安全问题)
有些人建议使用数组而不是命名变量 - 这是正确的解决方案。
你已经用$numbers
做了,所以你能用post变量做些什么吗?
如果它们与您已获得name="a' . $i . '_post"
的HTML代码相关,那么您可以将此代码更改为发布变量 - 如下所示:
name="a_post['.$i.']"
然后,您将拥有名为a1_post
和a2_post
等的帖子变量,而不是拥有名为a_post[1]
和a_post[2]
等的帖子变量,然后循环变得非常容易他们因为他们是一个阵列。
答案 3 :(得分:0)
http://php.net/manual/en/function.eval.php
eval功能可以满足你的需要。
答案 4 :(得分:0)
我猜你应该用数组替换你的单个变量。 我的意思是,而不是创造
$ a1_pos_txt ... $ a9_pos_txt
你应该有一个数组,你可以使用类似的东西:
if($ myVar [$ i]!== true){...}
你在哪里以及如何初始化你的旗帜变量?
查理
答案 5 :(得分:0)
http://us2.php.net/manual/en/language.variables.variable.php
变量变量可以做你想要的......