2012-05-19 38 views
1

您好我有按字母順序排列電影名,其中我想創建的HTML表的數組,我想這樣做的飛行,所以我做了以下內容:變換HTML表格

echo "<div align=\"center\"><table>"; 
$i=0; 
foreach ($results as $entry){ 
    //If first in row of 4, open row 
    if($i == 0) { 
     echo "<tr>\n"; 
    } 
    //print a cell 
    echo "\t<td>" . $entry . "</td>\n"; 
    i++; 
    //if last cell in row of 4, close row 
    if($i == 4) { 
     echo "</tr>\n"; 
     $i=0; 
    } 
} 

if($i < 4) { 
    while($i < 4) { 
     echo "\t<td></td>\n"; 
     $i++; 
    } 
    echo "</tr>\n"; 
} 
echo "</table></div>"; 

然而,這建立了一個表格,它看起來像:

entry0 | entry1 | entry2 | entry3 
entry4 | entry5 | entry6 | entry7 

我該如何着手建立一個表所示:

entry0 | entry3 | entry6 
entry1 | entry4 | entry7 
entry2 | entry5 | entry8 

我猜我將不得不重新組織我的$結果數組,仍然以同樣的方式建立表?

我很新的PHP(一個星期!),所以我真的不知道如何去了解這個

感謝您的幫助

回答

1
$results = array('e1', 'e2', 'e3', 'e4', 'e5', 'e6','e7'); 

$NUM_COLUMNS = 3; 

$numRows = count($results)/$NUM_COLUMNS; 
if (count($results) % $NUM_COLUMNS > 0) { 
    $numRows += 1; 
} 

echo "<div align=\"center\"><table>"; 
$i=0; 
for ($i = 0; $i < $numRows; $i++) { 
    echo "<tr>\n"; 

    $index = $i; 
    for ($j = 0; $j < $NUM_COLUMNS; $j++) { 
    //print a cell 
    $entry = ''; 
    if ($index < count($results)) { 
     $entry = $results[$index]; 
    } 
    echo "\t<td>" . $entry . "</td>\n"; 

    $index += $numRows; 
    } 

    echo "</tr>\n"; 
} 

echo "</table></div>"; 

這被測試,幷包括垂直排序項目。我會寫一個描述,但我剛接到一個電話,不得不離開。如果您在約1小時內有任何問題,我會回答問題。 (對不起!)

+0

感謝這工作完美,我會通過它,並嘗試現在瞭解它:) –

+0

訣竅是,因爲行不再包含順序元素,你有循環而不是項目的行。因此,您可以計算循環前的行數,並使用它計算出每行中的哪三項。 – mpdaugherty

0

如何:(我沒有測試,而應該是OK)

<?php 
$i = 1; 
$max = 3; // this is the number of columns to display 

echo "<div align=\"center\"><table><tr>"; 

foreach ($results as $entry) { 
    echo "<td style=\"text-align: center;\">"; 
    echo $entry; 
    echo "</td>"; 

    $i++; 

    if ($i == ($max)) { 
     echo '</tr><tr>'; 

     $i = 1; 
    } 
} 

echo "</tr>\n"; 
echo "</table></div>"; 
?> 
+0

這與我已有的相同,雖然有點簡單。我希望表格結構不同,請參閱我的示例 –

+0

嗯,是的。我需要改變$ i的開始計數。我修改了它,並且在添加新行後添加了$ i。 –

+0

這仍然不能垂直排序,但其他答案雖然。無論如何感謝您 –