1

我有这段代码可以用 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变量,以便在 foo 循环时得到它,而不是$a1_pos_txt每次都得到:

$a1_pos_txt
.
.
$a9_pos_txt

我基本上是我所做的$numbers["a" . $i . "_pos"]name="a' . $i . '_post"但现在变量在另一个变量中,我不知道该怎么做。

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

提前致谢!!

4

6 回答 6

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>';
?>

于 2010-11-19T13:33:17.633 回答
1

您可以使用动态变量:

<?php
    $test = 'a';
    echo ${'test'}; 
?>

这将显示“a”。

因此,您可以将变量名称构建为字符串并获取其值!

于 2010-11-19T13:24:24.950 回答
1

有人建议使用可变变量——它们太糟糕了!不要使用它们!(它们会使您的代码非常难以阅读和维护,并有可能引入安全问题)。

其他人建议使用eval()- 绝对不要使用它!(eval在几乎所有可能的情况下,使用都被认为是非常糟糕的做法;它很可能会引入安全问题)

有几个人建议使用数组而不是命名变量——这是正确的解决方案。

你已经用 了$numbers,那么你能用 post 变量做类似的事情吗?

如果它们与您获得的 HTML 代码相关,name="a' . $i . '_post"那么您可以更改此代码以发布变量——如下所示:

name="a_post['.$i.']"

然后,您将拥有名为a1_postand等的 post 变量,而不是命名为and等。然后循环它们变得非常容易,因为它们是一个数组。a2_posta_post[1]a_post[2]

于 2010-11-19T13:42:59.620 回答
0

http://us2.php.net/manual/en/language.variables.variable.php

变量变量会做你想要的..

于 2010-11-19T13:30:29.303 回答
0

http://php.net/manual/en/function.eval.php

eval 函数会做你想做的事。

于 2010-11-19T13:21:27.760 回答
0

我想你应该用数组替换你的单个变量。我的意思是,而不是创造

$a1_pos_txt ... $a9_pos_txt

你应该有一个数组,你可以使用类似的东西:

if($myVar[$i] !== true) {...}

你在哪里以及如何初始化你的标志变量?

查理

于 2010-11-19T13:21:46.353 回答