Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вывод массива из строк в таблицу


Автор: zluka 20.3.2007, 21:01
Хочу вывести массив из строк в обыкновенную таблицу:
Код

 $colums = 7;        //кол-во столбцов
 $max_tr = 5;       //кол-во линий (строк)

 //этот массив будем выводить
 $massiv = array ("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15",       
                         "16","17","18","19","20","21","22","23","24","24","26","27","28","29","30","31");   

 echo "<table widht=300 border=1>";
 for($k=0; $k<count($massiv); $k++)                 
 {
  for($i=0; $i<$max_tr; $i++)                        //выводим нужное кол-во строк (<tr>)
  {
    echo "<tr>";
    for($j=0; $j<$colums; $j++)               //выводим нужное кол-во ячеек (<td>)
    {
        echo "<td>";
         echo $massiv[$k++];       
        echo "</td>";
    }
    echo "</tr>";
  }
  echo "</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 24 26 27 28 
29 30 31 
Notice: Undefined offset: 31 in Z:\home\localhost\www\SCRIPTS\PUZZLE_for_Hacker\1\1_10\firsta.php on line 26
 
Notice: Undefined offset: 32 in Z:\home\localhost\www\SCRIPTS\PUZZLE_for_Hacker\1\1_10\firsta.php on line 26
 
Notice: Undefined offset: 33 in Z:\home\localhost\www\SCRIPTS\PUZZLE_for_Hacker\1\1_10\firsta.php on line 26
 
Notice: Undefined offset: 34 in Z:\home\localhost\www\SCRIPTS\PUZZLE_for_Hacker\1\1_10\firsta.php on line 26

Почему? 
З.Ы. Хотя это не самый лучший вариант решения задачи  smile 

Автор: szz 20.3.2007, 23:17
Все очень прсто, ты со своими константами вылезаешь за пределы массива. Проверять ведь надо.
Пиши так:

Код

$count_massiv = count($massiv);
 for($k=0; $k<$count_massiv; $k++)                 
 {
  for($i=0; $i<$max_tr; $i++)                        //выводим нужное кол-во строк (<tr>)
  {
    if($k >= $count_massiv) break; // тут мы вылетим если вышли за границы
    echo "<tr>";
    for($j=0; $j<$colums; $j++)               //выводим нужное кол-во ячеек (<td>)
    {
        if($k >= $count_massiv) break; // тут мы вылетим если вышли за границы
        echo "<td>";
         echo $massiv[$k++];       
        echo "</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
 }


Автор: Serkys 20.3.2007, 23:18
Сделай перебор массива через foreach(). Так лучше будет.
Которая из них строка 26?
Согласись некрасиво:
Код

$massiv = array ("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15",       
                         "16","17","18","19","20","21","22","23","24","24","26","27","28","29","30","31");


Для этого есть специальная функция:
Код

$massiv = range (1, 31);

Автор: zluka 21.3.2007, 17:58
Цитата(Serkys @  20.3.2007,  23:18 Найти цитируемый пост)
Которая из них строка 26?

Я извиняюсь, это вообще-то строка 17. (если смотреть на мой код выше)

А так, спасибо вам. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)