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]   

> Без описания
gurvinek
Отправлено: 27 Апреля, 2014 - 22:25:06
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


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




Есть массив, который выводит в Opencart категории на главной странице:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="row-fluid">
  3. <?php foreach ($categoryhome as $categoryhome) {?>
  4.  
  5.    <div class="product ot-product  span4 vertical-separator product-spacer">
  6.    </div>
  7.  
  8. <?php } ?>
  9. </div>
  10.  


по умолчанию ничего тут не прописано.
Хочется сделать так, чтобы каждые 3 элемента массива оборачивались в отдельный div.

т.е. сейчас выводится таким образом:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="row-fluid">
  3. <div class="product ot-product span4 vertical-separator product-spacer">
  4. <div class="product ot-product span4 vertical-separator product-spacer">
  5. <div class="product ot-product span4 vertical-separator product-spacer">
  6. <div class="product ot-product span4 vertical-separator product-spacer">
  7. <div class="product ot-product span4 vertical-separator product-spacer">
  8. <div class="product ot-product span4 vertical-separator product-spacer">
  9. <div class="product ot-product span4 vertical-separator product-spacer">
  10. <div class="product ot-product span4 vertical-separator product-spacer">
  11. <div class="product ot-product span4 vertical-separator product-spacer">
  12. <div class="product ot-product span4 vertical-separator product-spacer">
  13. <div class="product ot-product span4 vertical-separator product-spacer">
  14. <div class="product ot-product span4 vertical-separator product-spacer">
  15. </div>
  16.  


а хотелось бы таким:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="row-fluid">
  3.   <div class="product ot-product span4 vertical-separator product-spacer">
  4.   <div class="product ot-product span4 vertical-separator product-spacer">
  5.   <div class="product ot-product span4 vertical-separator product-spacer">
  6. </div>
  7. <div class="row-fluid">
  8.   <div class="product ot-product span4 vertical-separator product-spacer">
  9.   <div class="product ot-product span4 vertical-separator product-spacer">
  10.   <div class="product ot-product span4 vertical-separator product-spacer">
  11. </div>
  12. <div class="row-fluid">
  13.   <div class="product ot-product span4 vertical-separator product-spacer">
  14.   <div class="product ot-product span4 vertical-separator product-spacer">
  15.   <div class="product ot-product span4 vertical-separator product-spacer">
  16. </div>
  17. <div class="row-fluid">
  18.   <div class="product ot-product span4 vertical-separator product-spacer">
  19.   <div class="product ot-product span4 vertical-separator product-spacer">
  20.   <div class="product ot-product span4 vertical-separator product-spacer">
  21. </div>
  22.  



Я в php совсем новичок, сам всю голову уже сломал, ничего не получается. Помогите пожалуйста.

(Отредактировано автором: 28 Апреля, 2014 - 10:52:59)

 
 Top
gurvinek
Отправлено: 28 Апреля, 2014 - 10:54:25
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


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




знаю, что надо использовать цикл, но ничего не получается
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 11:45:09
Post Id



Участник


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


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




foreach не цикл?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. <div class="row-fluid">
  3. <?PHP
  4.         $i=0;
  5.         foreach ($categoryhome as $categoryhome) {
  6.         $i++;
  7.         if($i==1):
  8.                 echo("Открывающий тег ТЕГ");
  9.         endif;
  10.         ?>
  11.  
  12.    <div class="product ot-product  span4 vertical-separator product-spacer">
  13.    </div>
  14.  
  15. <?PHP
  16.         if($i==3):
  17.                 $i=0;
  18.                 echo("ЗАКРЫВАЮЩИЙ ТЕГ");
  19.         endif;
  20. }
  21. if($i!==0):
  22.         echo("ЗАКРЫВАЮЩИЙ ТЕГ");
  23.         endif;
  24. ?>
  25. </div>
  26.  

(Отредактировано автором: 28 Апреля, 2014 - 13:01:03)

 
My status
 Top
Строитель Модератор
Отправлено: 28 Апреля, 2014 - 12:34:52
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




gurvinek пишет:
Есть массив, который выводит в Opencart категории на главной странице:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="row-fluid">
  3. <?php foreach ($categoryhome as $categoryhome) {?>
  4.  
  5.    <div class="product ot-product  span4 vertical-separator product-spacer">
  6.    </div>
  7.  
  8. <?php } ?>
  9. </div>
  10.  


по умолчанию ничего тут не прописано.
Хочется сделать так, чтобы каждые 3 элемента массива оборачивались в отдельный div.


Если заранее известно колличество строк, возвращённых циклом, то можете использовать пример ниже

PHP:
скопировать код в буфер обмена
  1. <?PHP foreach ($categoryhome as $categoryhome){
  2.     $array[]=$categoryhome;
  3. }
  4. ?>
  5. <div class="1-й див">
  6. <?=$array[0]?>
  7. <?=$array[1]?>
  8. <?=$array[2]?>
  9. </div>
  10. <div class="2-й див">
  11. <?=$array[3]?>
  12. <?=$array[4]?>
  13. <?=$array[5]?>
  14. </div>
  15. <div class="3-й див">
  16. <?=$array[6]?>
  17. <?=$array[7]?>
  18. <?=$array[8]?>
  19. </div>


Разумеется, содержимое дивов подправите под себя.
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 12:59:48
Post Id



Участник


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


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




я написал выше для неизвестного количества (что вобщем то обычно и требуется)
 
My status
 Top
Строитель Модератор
Отправлено: 28 Апреля, 2014 - 13:03:18
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




3d_killer пишет:
я написал выше для неизвестного количества (что вобщем то обычно и требуется)


Да, я видел. Просто мой пример для человека, почти не понимающего в пхп, будет понятнее (хотя могу и ошибаться, но он вроде дизайнер, именно потому я разделил пхп и хтмл).
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 13:17:14
Post Id



Участник


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


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




то есть в вашем примере получается если у человека в выводе будет 100 таких блоков то ему надо будет написать около 500 строк кода по вашему примеру. Это называется проще???
 
My status
 Top
Строитель Модератор
Отправлено: 28 Апреля, 2014 - 13:41:00
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




3d_killer пишет:
то есть в вашем примере получается если у человека в выводе будет 100 таких блоков то ему надо будет написать около 500 строк кода по вашему примеру. Это называется проще???


Если 100 блоков - конечно не проще, но речь шла о трёх блоках, именно поэтому в своём посте я и предложил вариант для заранее известного колл-ва. А вообще - в чём суть спора? Оба кода рабочие, и автор топика сам выберет из двух вариантов один.
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 14:07:23
Post Id



Участник


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


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




я не заметил чтобы автор писал о трех блоках, перечитайте внимательно вопрос
 
My status
 Top
Строитель Модератор
Отправлено: 28 Апреля, 2014 - 14:44:31
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




3d_killer пишет:
я не заметил чтобы автор писал о трех блоках, перечитайте внимательно вопрос


Действительно, каждые 3 элемента массива оборачивались в отдельный div - я элементы принял за дивы.
 
 Top
gurvinek
Отправлено: 28 Апреля, 2014 - 17:31:40
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


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




Огромное спасибо!!! Все супер!!! Именно то, что я и хотел.

P.S. Взял вариант для неизвестного количества. Это как раз то, что нужно, т.к. неизвестно, сколько категорий будет.

Еще раз спасибо!!!

Тему можно закрывать.
 
 Top
teddy
Отправлено: 28 Апреля, 2014 - 18:53:42
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




Ещё вариант(помоему более наглядный, особенно при большом уровне вложенности)
PHP:
скопировать код в буфер обмена
  1. $divs = array_chunk($arr, 3);//предположим что $arr наш массив данных для вывода
  2. foreach($divs as $div){
  3.     echo '<div>';
  4.         foreach($div as $sub_div){
  5.             echo '<div>'.$sub_div.'</div>';            
  6.         }
  7.     echo '</div>';
  8. }

(Отредактировано автором: 28 Апреля, 2014 - 18:54:04)

 
 Top
Ch_chov
Отправлено: 28 Апреля, 2014 - 19:47:57
Post Id



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


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




gurvinek пишет:
<div class="row-fluid">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
</div>
<div class="row-fluid">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
</div>
<div class="row-fluid">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
</div>
<div class="row-fluid">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
  <div class="product ot-product span4 vertical-separator product-spacer">
</div>

По сути это такая же разметка как у html таблицы (tr и td). Тут много раз такая тема проскакивала
https://www.google.ru/search?q=s...0%B8%D1%86%D1%83
 
 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