2010-11-19 54 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]等等。然後它變得很容易循環它們,因爲它們是一個數組。