Изменить в PHP с таблицей - PullRequest
1 голос
/ 02 августа 2011
<table><tr>
<?php
             for($i=0;$i<15;$i++) {

                if($i%5 == 0) {echo '</tr> <tr>';}
                ?><td><?php echo $i ?></td> 

            <?php
            }?>
                </tr>
</table>

это генерирует:

0   1   2   3   4
5   6   7   8   9
10  11  12  13  14

как я могу сделать:

0 3 6 9  12
1 4 7 10 13
2 5 8 11 14

?

Ответы [ 3 ]

3 голосов
/ 02 августа 2011

Вам нужен вложенный цикл

<table>
    <?php
    $rows = 3;
    for($i=0 ; $i < $rows ; $i++ ) {
        echo "<tr>";
        for( $j = 0 ; $j < 5 ; $j++ ) { 
            echo "<td>" . ($j * $rows + $i) . "</td>";
        }
        echo "</tr>";
    }
    ?>
</table>
2 голосов
/ 02 августа 2011

Я попытался сделать имена переменных описательными:

<table>
<?php
// Set the number of rows, cols, and starting number here:
$number_rows = 3;
$number_cols = 5;
$starting_num = 0;

// You can use foreach w arrays... much easier
$rows    = range(0,$number_rows - 1);
$cols    = range(0,$number_cols - 1);

foreach($rows as $one_row) {
?>
    <tr>
    <?php
    foreach($cols as $one_col) {

        // Do the calculation
        echo "<td>" . 
             ($starting_num + $one_col + ( max($rows) * $one_col ) + $one_row) .
             "</td>";
    }
    ?>
    </tr>
<?php
}
?>
</table>

Рабочий пример как в ОП.

Теперь скажем, что выхотите перейти от (1300-1431), затем вы начинаете с 1300 и хотите 4 х 8.

$number_rows  = 8;
$number_cols  = 4;
$starting_num = 1300;

Как это.

Есть два «трюка».

Первый использует range () для быстрого определения целых чисел массива.Я считаю, что с массивами работать приятнее, чем с необработанными числами, поскольку с массивами можно работать с помощью интуитивно понятной конструкции foreach () .

Второе вычислениекак узнать, какое число печатать, если у вас есть столбец, строка и начальный номер.Проще всего выяснить числа для первого ряда и перейти оттуда.Давайте нумеруем строки и столбцы от 0. Таким образом, col: 0 row: 0 будет начальным числом.Столбец: 1 Строка: 0, число справа, будет просто начальным номером + один (номер столбца) + количество строк меньше единицы (легче всего увидеть, посмотрев на матрицу числа), и числострок меньше единицы - это максимальное число в массиве строк.Итак, для первой строки у нас есть:

$starting_num + $one_col + ( max($rows) * $one_col )

, затем все мы просто добавляем номер строки, чтобы учесть это, и у нас есть все:

$starting_num + $one_col + ( max($rows) * $one_col ) + $one_row
1 голос
/ 02 августа 2011

Протестированный пример с заданным началом и концом:

<table>
<?php
$start = 1300;
$end = 1432;
$n = $end - $start + 1;
$cols = 5;
$rows = ceil($n / $cols);

for($i=0 ; $i < $rows ; $i++ ) {
    echo "<tr>";
    for( $j = 0 ; $j < $cols ; $j++ ) { 
        $val = $j * $rows + $i;
        echo "<td>";
        echo ($val < $n) ? $val + $start : '&nbsp;'; 
        echo "</td>";
    }
    echo "</tr>";
}
?>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...