2012-05-21 44 views
0

我試圖用for循環來創建動態地返回這樣的一個表:注意如何在TD內容已安排PHP和LOOP

<table> 
<tr> 
    <td>1</td> 
    <td>3</td> 
    <td>5</td> 
    <td>7</td> 
    <td>9</td> 
</tr> 
<tr> 
    <td>2</td> 
    <td>4</td> 
    <td>6</td> 
    <td>8</td> 
    <td>10</td> 
</tr> 
</table> 

中我所到目前爲止已經試過是

$row=2; 
$col=20; 
$x=0; 
echo '<table>'; 
for($i=0;$i<$row;$i++){ 
    echo '<tr>'; 
    for($k=0;$k<$col;$k++) 
    { 
     echo '<td>'.echo $x+=1.'</td>'; 
    } 
    echo '</tr>'; 

} 

在這種情況下,我得到的東西不同,這是不是我想要的。

<table> 
    <tr> 
    <td>1</td> 
    <td>2</td> 
    <td>3</td> 
    <td>4</td> 
    <td>5</td> 
    </tr> 
    <tr> 
    <td>6</td> 
    <td>7</td> 
    <td>8</td> 
    <td>9</td> 
    <td>10</td> 
    </tr> 
    </table> 

請別人幫我映射this.Thanks

+0

感謝校正。因此,發佈爲 –

+0

錯字error.Sorry你只是想一個表的數字時,或者是數字的,你想怎麼排序的數據爲例試圖格式?即你在追逐這個循環的盜用嗎? – Scuzzy

+0

我想在表格中顯示內容。他們有沒有格式的索引。總之我的表格中的數字應該以這種方式來 –

回答

1
<?php 
    # how high to count 
    $count = 10; 

    # how many rows in the table 
    $rows = 2; 

    # figure out how many columns 
    $columns = ceil($count/$rows); 

    # could also go the other way and declare there to be 5 columns and then 
    # divide to get the rows, but since you're counting down the columns, 
    # I thought this made more sense. Either way. 

?><table><?php 

    for ($i=0; $i<$rows; ++$i) { 

?><tr><?php 

    for ($j=0; $j<$columns; ++$j) { 

     # calculate which number to show in column $j of row $i. Each column adds 
     # $rows numbers to the total, while each row just adds one more. And we 
     # want to start at 1 instead of 0. 
     $n = $j * $rows + $i + 1; 

     ?><td><?= $n ?></td><?php 
    } 

    ?></tr><?php 

    } 
?></table> 
+0

感謝marks.It完美的作品對我來說 –

1
$total_count = 10; 
$total_rows = 2; 

$table = array(); 
//building table array 
for($i=1;$i<=$total_count;$i++) { 
    $row = $i % $total_rows; 
    $row = $row == 0 ? $total_rows : $row; 
    $table[$row][] = $i; 
} 

//generate table based on array 
echo "<table>"; 
for($row=1;$row<=$total_rows;$row++) { 
    echo "<tr>"; 
    foreach($table[$row] as $cell) { 
     echo "<td>".$cell."</td>"; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

無需這裏的數組。它比這更簡單。 – Galen

+0

哇,你是對的:) – ephemeron

+0

,我會嘗試一下。 –

1

這不是一樣複雜,因爲人們都使它看起來

開始在你的任何行目前內環並且每次加2。

<?php 
$rows=2; 
$cols=10; 
?> 


<table> 
<?php for($i=1;$i<=$rows;$i++): ?> 
    <tr> 
    <?php for($k=$i;$k<$cols;$k+=2): ?> 
     <td><?php echo $k ?></td> 
    <?php endfor; ?> 
    </tr> 
<?php endfor; ?> 
</table> 

標識可能使用範圍和foreach雖然

<?php 
$rows=2; 
$cols=10; 
?> 

<table> 
<?php foreach(range(1, $rows) as $row): ?> 
    <tr> 
    <?php foreach(range($row, $cols, 2) as $col): ?> 
     <td><?php echo $col ?></td> 
    <?php endforeach; ?> 
    </tr> 
<?php endforeach; ?> 
</table> 
+0

這取決於Galen所知道的情況。如果預定有5列,那麼很好。但是,如果僅僅是「我想按照列的主要順序排列在N行兩列」,那麼你必須做一點數學。我認爲我的解決方案非常簡單。 –

+0

非常感謝,我會嘗試一下 –

0

這種方法將拆分數據本身

function array_chunk_vertical($array = null,$cols = 3, $pad = array(null)) 
{ 
    if (is_array($array) == true and !empty($array)) 
    { 
    $rows = ceil(count($array)/$cols); 
    $array = array_chunk($array,$rows); 
    if (count($array) < $cols) 
    { 
     $array = array_pad($array,$cols,$pad); 
    } 
    foreach($array as $key => $value) 
    { 
     $array[$key] = array_pad($value,$rows,null); 
    } 
    foreach($array as $key => $value) 
    { 
     foreach($value as $sub_key => $sub_value) 
     { 
     $output[$sub_key][$key] = $sub_value; 
     } 
    } 
    return $output; 
    } 
    return $array; 
} 

$data = array(1,2,3,4,5,6,7,8,9,10,11); 

echo '<table border="1">'; 
foreach(array_chunk_vertical($data,ceil(count($data)/2)) as $row) 
{ 
    echo '<tr>'; 
    foreach($row as $col) 
    { 
    echo '<td>' . $col . '</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>';