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
Форумы портала PHP.SU :: Версия для печати :: Помогите с выводом массива
Форумы портала PHP.SU » » Вопросы новичков » Помогите с выводом массива

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

1. gurvinek - 27 Апреля, 2014 - 22:25:06 - перейти к сообщению
Есть массив, который выводит в 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 совсем новичок, сам всю голову уже сломал, ничего не получается. Помогите пожалуйста.
2. gurvinek - 28 Апреля, 2014 - 10:54:25 - перейти к сообщению
знаю, что надо использовать цикл, но ничего не получается
3. 3d_killer - 28 Апреля, 2014 - 11:45:09 - перейти к сообщению
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.  
4. Строитель - 28 Апреля, 2014 - 12:34:52 - перейти к сообщению
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>


Разумеется, содержимое дивов подправите под себя.
5. 3d_killer - 28 Апреля, 2014 - 12:59:48 - перейти к сообщению
я написал выше для неизвестного количества (что вобщем то обычно и требуется)
6. Строитель - 28 Апреля, 2014 - 13:03:18 - перейти к сообщению
3d_killer пишет:
я написал выше для неизвестного количества (что вобщем то обычно и требуется)


Да, я видел. Просто мой пример для человека, почти не понимающего в пхп, будет понятнее (хотя могу и ошибаться, но он вроде дизайнер, именно потому я разделил пхп и хтмл).
7. 3d_killer - 28 Апреля, 2014 - 13:17:14 - перейти к сообщению
то есть в вашем примере получается если у человека в выводе будет 100 таких блоков то ему надо будет написать около 500 строк кода по вашему примеру. Это называется проще???
8. Строитель - 28 Апреля, 2014 - 13:41:00 - перейти к сообщению
3d_killer пишет:
то есть в вашем примере получается если у человека в выводе будет 100 таких блоков то ему надо будет написать около 500 строк кода по вашему примеру. Это называется проще???


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


Действительно, каждые 3 элемента массива оборачивались в отдельный div - я элементы принял за дивы.
11. gurvinek - 28 Апреля, 2014 - 17:31:40 - перейти к сообщению
Огромное спасибо!!! Все супер!!! Именно то, что я и хотел.

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

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

Тему можно закрывать.
12. teddy - 28 Апреля, 2014 - 18:53:42 - перейти к сообщению
Ещё вариант(помоему более наглядный, особенно при большом уровне вложенности)
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. }
13. Ch_chov - 28 Апреля, 2014 - 19:47:57 - перейти к сообщению
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

 

Powered by ExBB FM 1.0 RC1