Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вставка элемента в определенный диапазон массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: простое решение задачи
bratkovsky
Отправлено: 01 Ноября, 2012 - 18:04:15
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




В пример если вам нужно передать массив в html таблицу с определенным колличеством столбцов, в нашем случае здесь 13 столбцов таблицы в ячейки которой и будет добавлятся информация из массивов

Наверняка кто то уже по потел над этой задачей и не раз ломал голову над выдачей (нормальной и ровной таблицей).


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. echo"<table><tr><td>";
  5.  
  6. for($i=0;$i<100;$i++){  //задаем колличество массива в нашем случае 100 :)
  7. $s1=$i/13;   //делим каждое выданое число массива на 13
  8. if(!$i=='0'):
  9.  
  10. $t='</td></tr><tr><td>';   //вставка перехода на новую строку после каждой 13-ой колонки, пропускаем только нулевой номер массива
  11.  
  12. endif;
  13. if(!strripos("$s1",'.')):   //если число 13, 26,... то True если 0.72325652 ... False
  14. echo"$i$t";
  15. else:
  16. echo"$i </td><td>";
  17. endif;
  18. }
  19.  
  20. echo"</td></tr></table>";
  21.  
  22. ?>
  23.  
  24.  


Радость Подмигивание

Хотелось бы знать ваше мнение!!!! Закатив глазки

(Отредактировано автором: 01 Ноября, 2012 - 18:11:34)

 
 Top
Stivir
Отправлено: 01 Ноября, 2012 - 18:47:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


Помог: 2 раз(а)




Если я правильно понял тему, то массив имеет неопределённое кол-во эл., а таблица 13 столбцов, а кол-во строк в ней будет зависеть от кол-ва эл.массива и расширяется эта таблица динамически, т.е. появился новый эл. массива - появилась новая ячейка??
 
 Top
KingStar
Отправлено: 01 Ноября, 2012 - 18:56:21
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




бред какой-то, ты хотя бы покажи тот массив, который передаешь Хм


-----
То что программа работает, не означает что она написана правильно!
 
 Top
bratkovsky
Отправлено: 01 Ноября, 2012 - 19:06:32
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




это подойдет для нормального построения элементов массива по нужной шырине таблицы
хочешь 10 столбцов? На 10! Хочешь 18 на 18! А количество строк зависит только от количества массива

18 яч.
18 яч.
18 яч.
18 яч.
18 яч.
...
(Добавление)
KingStar пишет:
бред какой-то, ты хотя бы покажи тот массив, который передаешь Хм


Вот твой массив!!!

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. echo"<table><tr><td>";
  4.  
  5. $file=file('file.txt');
  6. $count=count($file);
  7.  
  8. for($i=0;$i<$count;$i++){  
  9. $s1=$i/13;   //делим каждое выданое число массива на 13
  10. if(!$i=='0'):
  11.  
  12. $t='</td></tr><tr><td>';   //вставка перехода на новую строку после каждой 13-ой колонки, пропускаем только нулевой номер массива
  13.  
  14. endif;
  15. if(!strripos("$s1",'.')):   //если число 13, 26,... то True если 0.72325652 ... False
  16. echo"$file[$i]$t";
  17. else:
  18. echo"$file[$i] </td><td>";
  19. endif;
  20. }
  21.  
  22. echo"</td></tr></table>";
  23.  
  24. ?>

(Добавление)
Stivir пишет:
Если я правильно понял тему, то массив имеет неопределённое кол-во эл., а таблица 13 столбцов, а кол-во строк в ней будет зависеть от кол-ва эл.массива и расширяется эта таблица динамически, т.е. появился новый эл. массива - появилась новая ячейка??


Точно в яблочко! Подмигивание

(Отредактировано автором: 01 Ноября, 2012 - 21:43:40)

 
 Top
halsoft
Отправлено: 01 Ноября, 2012 - 19:11:35
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012  
Откуда: The Land of Chechens


Помог: 3 раз(а)




Я бы сделал так

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $arr = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); //массив с данными
  3. $perRow = 13;
  4. $rows = ceil(count($arr)/$perRow);
  5. $k = 0;
  6. ?>
  7. <table border=1>
  8.         <?for($i=1;$i<=$rows;$i++):?>
  9.                 <tr>
  10.                         <?for($j=1;$j<=$perRow;$j++):?>
  11.                                 <td><?=$arr[$k++]?></td>
  12.                         <?endfor?>
  13.                 </tr>
  14.         <?endfor?>
  15. </table>


-----
Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
 
 Top
bratkovsky
Отправлено: 01 Ноября, 2012 - 19:16:23
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




halsoft пишет:
Я бы сделал так

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $arr = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); //массив с данными
  3. $perRow = 13;
  4. $rows = ceil(count($arr)/$perRow);
  5. $k = 0;
  6. ?>
  7. <table border=1>
  8.         <?for($i=1;$i<=$rows;$i++):?>
  9.                 <tr>
  10.                         <?for($j=1;$j<=$perRow;$j++):?>
  11.                                 <td><?=$arr[$k++]?></td>
  12.                         <?endfor?>
  13.                 </tr>
  14.         <?endfor?>
  15. </table>


Не плохо! Улыбка
 
 Top
Stivir
Отправлено: 01 Ноября, 2012 - 19:46:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


Помог: 2 раз(а)




Как вариант:
PHP:
скопировать код в буфер обмена
  1. function showTable()
  2. {
  3.     $arr = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  4.     print "<table bordercolor='pink' border=1>";    
  5.     $k = 0;                                        
  6.     for($i = 0; $i < count($arr); $i ++)
  7.     {
  8.         if($k==0)
  9.             echo "<tr>";                    
  10.         print '<td>'.$arr[$i].'</td>';
  11.         if($k==12)                          
  12.         {
  13.             $k=0;
  14.             echo "<tr>";
  15.         }
  16.         else
  17.             $k++;
  18.     }
  19.     print "</table>";                        
  20. }
  21. showTable();
 
 Top
halsoft
Отправлено: 02 Ноября, 2012 - 06:32:16
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012  
Откуда: The Land of Chechens


Помог: 3 раз(а)




Stivir пишет:
Как вариант


Мне кажется, маленький недостаток этого варианта то, что он не дорисовывает оставшиеся пустые ячейки, как бы неправильная верстка. Нужно немного доработать


-----
Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
 
 Top
avtor.fox
Отправлено: 02 Ноября, 2012 - 08:27:44
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




PHP:
скопировать код в буфер обмена
  1. $tblRows = range(1, 55); //наш массив
  2. $collumn = 5; $i = 0; //столбцы и счётчик
  3. $newTbl = array(); $cTbl = 1; //массив с таблицей и счётчик строк в ней же
  4. foreach($tblRows as $k => $v){
  5.         if($i == $collumn){
  6.                 $i = 0; $cTbl++;
  7.         }
  8.         $newTbl[$cTbl][] = $v; $i++;
  9. }
  10. if(count($newTbl[$cTbl]) < $collumn){
  11.         $diff = count($newTbl[$cTbl]) - $collumn;
  12.         $value = end($newTbl[$cTbl]) + 1;
  13.         for($i=count($newTbl[$cTbl]);$i<$collumn;$i++){
  14.                 $newTbl[$cTbl][] = '-'; $value++;
  15.         }
  16. }
  17. echo "<table cellpadding='1' cellspacing='1'>";
  18. foreach($newTbl as $k => $v){
  19.         echo '<tr>';
  20.                 foreach($v as $val){
  21.                         echo "<td style='background:#ddd;padding:5px;text-align:center;'>".$val."</td>";
  22.                 }
  23.         echo '</tr>';
  24. }


Подмигивание
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB