2015-06-01 3 views
0

Код содержит первые 10 чисел в первой строке и 9 чисел в других 7 строках и 8 числах в последней строке.Не удается правильно напечатать таблицу 9x9

Как получить матрицу 9x9 так, чтобы все строки имели 9 чисел?

Я пробовал все, но ничего не работает. Есть какой-либо способ сделать это?

<table border=1> 
    <tr> 
    <?php 

     for ($i = 1; $i < 82; $i++) { 
      $arr[] = $i; 
     } 

     for ($i = 0; $i < 81; $i++) { 
      echo '<td>' . $arr[$i] . '</td>'; 

     if ($i % 9 == 0 && $i != 0) { 
      echo "</tr><tr>"; 
     } 


     } 

    ?> 
    </tr> 
</table> 

ответ

0

Лучше всего то, что @Rizier говорит, но если вы хотите изменить только свой код, то: -

<table border=1> 
    <tr> 
    <?php 
    for ($i = 1; $i < 82; $i++) { 
    $arr[] = $i; 
} 
    $j=1; //add a new count starts from 1 
    for ($i=0; $i<81; $i++) 
    { 
     echo '<td>'.$arr[$i].'</td>'; 

     if ($j%9==0) // check counter modules 9 will be zero or not. it will break after each 9 iteration. 
     { 
      echo "</tr><tr>"; 
     } 


    $j++;} // increase the value of counter 
    ?> 
    </tr> 
</table> 

Выход: - http://prntscr.com/7bu34m

0

Это должно работать для вас:

Здесь я первый создать массив с 81 элементами с range(). Затем I array_chunk() массив в двумерный массив, где каждый дополнительный массив имеет 9 элементов.

В конце просто проведите по всей подвале и implode() в одну строку.

<table border=1> 
<?php 

    $arr = range(1, 81); 
    $arr = array_chunk($arr, 9); 

    foreach($arr as $v) 
     echo "<tr><td>" . implode("</td><td>", $v) . "</td></tr>"; 

?> 
</table> 

выход:

1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26 27 
28 29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 
55 56 57 58 59 60 61 62 63 
64 65 66 67 68 69 70 71 72 
73 74 75 76 77 78 79 80 81 
0

вы начинаете $i=0; поэтому первое условие истинно оно было помещено в </tr> после первого результата

<table border=1> 
    <tr> 
    <?php 
    for ($i = 1; $i < 82; $i++) { 
    $arr[] = $i; 
} 
    $j=1; 
    for ($i=0; $i<81; $i++) 
    { 
     echo '<td>'.$arr[$i].'</td>'; 

     if ($j%9==0) 
     { 
      echo "</tr><tr>"; 
     } 


    $j++;} 
    ?> 
    </tr> 
</table> 

выход

1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26 27 
28 29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 
55 56 57 58 59 60 61 62 63 
64 65 66 67 68 69 70 71 72 
73 74 75 76 77 78 79 80 81 
0

попробовать это

for ($i=1; $i<=81; $i++) 
{ 
    echo '<td>'.$arr[$i].'</td>'; 

    if ($i%9==0 && $i!=1) 
    { 
     echo "</tr><tr>"; 
    } 


} 
+1

Зачем нужно использовать ОП «попробуйте это»? Пожалуйста, добавьте объяснение того, что вы сделали, и почему вы сделали это именно так, не только для OP, но и для будущих посетителей SO. –

0

Ваш код почти current ... Please echo ''. $ arr [$ i]. ''; линия ниже условия if, как это ...

<table border=1> 
<tr> 
<?php 
for ($i = 1; $i < 82; $i++) { 
    $arr[] = $i; 
} 
for ($i=0; $i<81; $i++) 
{ 

    if ($i%9==0 && $i!=0) 
    { 
     echo "</tr><tr>"; 
    } 
    echo '<td>'.$arr[$i].'</td>'; 



} 
?> 
</tr> 
</table> 
Смежные вопросы