2010-11-18 112 views
1

這是一個非常簡單的Sudoku like HTML table用PHP生成「Sudoku like」HTML表格

我想要的是用PHP生成這個考慮以下內容。

每個單元應該是這樣的(或類似):

<!-- Position "a1" --> 

<?php 
if ($a1_pos_txt !== TRUE){ 

    echo "<td>" . $numbers["a1_pos"] . "</td>"; 

}else{ 

?> 

<td><input type="text" name="a1_post" size="1" maxlength="1" /></td> 

<?php 
} 
?> 

這顯然是 「A1」 單元格中。

以防萬一,「c4」和「f9」應該看起來像THIS

因此,PHP生成的表格應該看起來像所有行中的THIS等等。

正如我所說,並不想複製和粘貼此代碼並將a1替換爲a2等81次,我希望他的表和變量可以用PHP動態生成。

我試圖儘可能清楚所有我可以提供的代碼,但請詢問您是否需要任何澄清!

注:對不起變量蹩腳的選擇($a1_pos_txt$a1_posa1_post)沒有VERT友好:)

回答

3

這應做到:

$lit = range('A', 'J'); 
echo '<table border="1">'; 
for($y = 0; $y < 9; $y++) { 
    echo '<tr>'; 
    for($x = 0; $x < 9; $x++) { 
     $block = floor($x/3) + floor($y/3) * 3; 
     $cell = ($x % 3 + 1) + ($y % 3) * 3; 
     echo '<td>'.$lit[$block].$cell.'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 

輸出:

A1 A2 A3 B1 B2 B3 C1 C2 C3 
A4 A5 A6 B4 B5 B6 C4 C5 C6 
A7 A8 A9 B7 B8 B9 C7 C8 C9 
D1 D2 D3 E1 E2 E3 F1 F2 F3 
D4 D5 D6 E4 E5 E6 F4 F5 F6 
D7 D8 D9 E7 E8 E9 F7 F8 F9 
G1 G2 G3 H1 H2 H3 I1 I2 I3 
G4 G5 G6 H4 H5 H6 I4 I5 I6 
G7 G8 G9 H7 H8 H9 I7 I8 I9 

大概可以簡化了一點,但應該給你你需要什麼。 $block是當前的3x3網格,$cell是該網格中的單元格編號。

編輯

我檢查你的榜樣,這可能不是你想要的。顯然你需要A爲第一行,B爲第二等,不是每3x3塊。這裏是你如何能做到這一點:

echo '<table border="1">'; 
foreach(range('A', 'J') as $y) { 
    echo '<tr>'; 
    for($x = 1; $x <= 9; $x++) { 
     echo '<td>'.$y.$x.'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 

輸出:

A1 A2 A3 A4 A5 A6 A7 A8 A9 
B1 B2 B3 B4 B5 B6 B7 B8 B9 
C1 C2 C3 C4 C5 C6 C7 C8 C9 
D1 D2 D3 D4 D5 D6 D7 D8 D9 
E1 E2 E3 E4 E5 E6 E7 E8 E9 
F1 F2 F3 F4 F5 F6 F7 F8 F9 
G1 G2 G3 G4 G5 G6 G7 G8 G9 
H1 H2 H3 H4 H5 H6 H7 H8 H9 
I1 I2 I3 I4 I5 I6 I7 I8 I9 
J1 J2 J3 J4 J5 J6 J7 J8 J9 
+0

哇,看起來非常好,我一定會給它一個!謝謝!!! – Trufa 2010-11-18 23:44:03

+0

感謝您的更新,我試圖將其應用於此。謝謝!! – Trufa 2010-11-19 00:06:09

+0

唯一的是我真正想要生成的不是「a1」「b2」的例子我特別爲這種情況修改你的代碼,感謝把我放在正確的方向。 – Trufa 2010-11-19 00:13:40

0

PHP支持陣列(或矩陣)的陣列。創建一個陣列從0到8,每個值也應該是從0陣列,以8

當你的9x9的矩陣構造 - 找出你想要得到回答並設置那些真正$answers[1][3] = true

哪些值

然後創建2個for-loops並打印出整個表格。你的outter for loop將不得不打印<tr>標籤。

+0

好,謝謝,我想我明白你的做法,但我不確定你的意思是:「找出你想要哪個值回答「對不起,謝謝! – Trufa 2010-11-18 23:37:17