Foreach и столбцы - PullRequest
       5

Foreach и столбцы

0 голосов
/ 20 января 2012
<?php
$arr = range(1,rand(40,120)); ?>

<table>

<?php
foreach ($arr as &$value) {
    echo '<tr><td>' . $value . '</td></tr>';
} ?>

</table>

Это генерирует для меня, например:

1
2
3
...
111

все в одном столбце.Как я могу сделать - когда в первом столбце 25 строк, затем создать новый столбец и т. Д. Например:

1   26  51
2   27  ...
3
..
25  50

Как я могу сделать это?Я могу использовать DIV вместо таблицы.

Ответы [ 3 ]

1 голос
/ 20 января 2012

EDITED

<?php

$rows = 25;
$arr = range(1, rand(40, 120));
$arr = array_merge($arr, array_fill(0, $rows - (count($arr) % $rows), null));
$cols = ceil(count($arr) / $rows);
$render = array();

echo '<table>' . "\n";
foreach ($arr as $i => $value) {
  $render[$i % $rows][] = $value;
  if (count($render[$i % $rows]) == $cols) {
    echo '  <tr>' . "\n" . '    <td>' . implode('</td>' . "\n" . '    <td>', $render[$i % $rows]) . '</td>' . "\n" . '  </tr>' . "\n";
  }
}
echo '</table>' . "\n";

?>
1 голос
/ 20 января 2012
<?php      
$arr = range(1,rand(40,120)); 
?>      

<div style="width:40px; float:left;">      

<?php      
foreach ($arr as $value) {      
    echo $value . '<br />';  
        if ($value % 25 == 0) {
            echo '</div><div style="width:40px; float:left;">';
        }
    } 
?>      

1 голос
/ 20 января 2012

Вертикально отсортированные столбцы такого типа (без каламбура) представляют собой серьезную проблему в html, так как это расположение "top-> bottom, left-> right", в то время как HTML-таблицы по своей природе "left-> right", top-> bottom "вместо.

Чтобы обойти это, вы должны выполнить некоторую математическую коррекцию для индексов массива, чтобы вы могли вывести по строкам:

$arr = range(1,rand(40,120));
$rows = ceil(count($arr) / 3); // assuming 3 columns
for ($i = 0; $i < $rows; $i++) {
    echo <<<EOL
<tr>
   <td>{$arr[$i]}</td>    1, 2, 3, etc...
   <td>{$arr[$i+rows]}</td>  11, 12, 13, etc...
   <td>{$arr[$i+(2*$rows)]}</td> 21, 22, 23, etc...
</tr>
EOL;
}

Этот код, вероятно,не будет работать как есть, но должен дать вам основную идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...