PHP - 变量变量或变量数组()用于()

时间:2010-11-19 13:18:02

标签: php arrays variables loops variable-variables

我有这个代码用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"做的,但现在变量在另一个变量中,我不知道如何做到这一点。

我希望它足够清楚,如果没有请求任何澄清。

提前致谢!!

6 个答案:

答案 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_posta2_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

变量变量可以做你想要的......