2010-11-19 53 views
1

变量里面我有这样的代码是用PHP生成一个HTML表:PHP - 可变变量或数组为()

<?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变量,以便它当福尔循环我每次都会得到$a1_pos_txt代替:

$a1_pos_txt 
. 
. 
$a9_pos_txt 

我就基本什么我与$numbers["a" . $i . "_pos"]name="a' . $i . '_post"但现在的变量是另一个变量我不知道如何做到这一点里面。

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

在此先感谢!

+4

你应该使用一个数组,而不是 – KingCrunch 2010-11-19 13:20:36

回答

2

取而代之的变量使用数组。在你的阵列将包含类似真或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>'; 
?> 

+0

虽然我不能像这样应用它(因为之前的代码),这给了我一个好主意(只需稍作修改,谢谢) – Trufa 2010-11-19 13:40:17

+0

谢谢!我做了一些非常相似的事情,但是在这里,这正是我所做的! – Trufa 2010-11-19 16:07:47

+0

我希望我的回答能帮助你解决你的问题 – 2010-11-22 05:24:00

0

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

eval函数会做你想要什么。

+0

该死的PHP是关闭的(对我来说至少)我看它一旦它上升了!谢谢!! – Trufa 2010-11-19 13:26:08

+0

@Trufa - 确认php.net已关闭。但是像uk.php.net这样的镜像已经启动了,所以请尝试其中一个。 – Spudley 2010-11-19 13:34:21

+0

该网站是阿金,看起来不错!谢谢我会试一试。 – Trufa 2010-11-19 13:37:20

0

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

$ a1_pos_txt ... $ a9_pos_txt

,你应该有一个数组,你可以使用一些像:

如果($ myVar的[$ i] = = true){...}

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

查理

+0

或正如Lan说的那样使用eval函数:) – Chemed 2010-11-19 13:25:30

1

您可以使用动态变量:

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

这将显示 “A”。

所以你可以建立一个字符串变量名并获得它的值!

+0

是的我想我可以但我无法弄清楚如何做到这一点“变量的一部分”$ a1_post_txt(只改变“1”) – Trufa 2010-11-19 13:34:00

+0

我已更新,我想你会更好地理解。 – MatTheCat 2010-11-19 13:39:44

1

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

其他人建议使用eval() - 绝对不要使用!(使用eval被认为是在几乎每一个可能的情况的做法非常差,这是极有可能引入安全问题)

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

你已经做了$numbers,所以你可以做一些类似的后变量?

如果他们与你有name="a' . $i . '_post",那么你可以改变这个代码,改为发布变量的HTML代码 - 这样的事情:

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

然后,而不是其命名为a1_post后的变量和a2_post等,你将有名为a_post[1]a_post[2]等等。然后它变得很容易循环它们,因为它们是一个数组。