Как сделать горизонтальный цикл в PHP

Текущий цикл ниже дает результат:

<?php foreach ($response->items->item as $value) { echo("<img src='".$value->imageUrl."' width=200><br>"); echo($value->description."<br>"); echo($value->url."<br>"); }; ?> 

// Результат

 <1st row> (image) description (url) </end 1st row> <2nd row> (image) description (url) </end 2nd row> <3rd row> (image) description (url) </end 3rd row> 

То, что мне нужно выполнить, – это скопировать результат, чтобы каждый элемент был горизонтальным слева направо. например

  <1st col> <2nd col> <3rd col> (image) (image) (image) description description description (url) (url) (url) </end 1st col> </end 2nd col> </end 3rd col> 

Условия должны быть:

  1. каждая строка, как показано выше, может иметь только 3 столбца, как показано выше.
  2. когда есть больше предметов, каждый элемент будет отображаться в следующей строке, как показано на первой строке.

Что такое элемент?

Один элемент включает:

  (image) description (url) 

Сколько предметов?

Это может быть до 20 или более.

конец вопроса

Хорошо, все, конец вопроса. Надеюсь получить помощь в этом, это эффективно.

Вы можете сделать много всего, чтобы выполнить это. Лучший способ (я думаю ..) создает UL и разбивается на каждый третий элемент:

 <ul> <?php $i = 0; foreach ($response->items->item as $value) : ?> <li<?php if ( $i % 3 == 0 ) echo ' class="break"' ?>> <?php echo "<img src='".$value->imageUrl."' width=200><br>"; ?> <?php echo $value->description ?> </li> <?php $i++; // Increment counter endforeach ?> </ul> 

Затем вам нужно указать, что этот список должен быть горизонтальным и указать, чтобы разбить строку в элементах .break:

 <style> ul li { float:left; } ul li.break { clear: right; } </style> 

Я построил это немного раньше для клиента, я думаю, что это именно то, что вам нужно: Столбцы с фокусом

В основном, вы изменяете addItem() чтобы правильно addItem() данные, которые хотите отобразить (ссылки, изображения и т. Д.), А затем просто вызывайте addItem() для каждого отображаемого элемента. Затем outputItemTable() выведет таблицу с данными, сгруппированными вместе правильно.

  <?php echo '<div style="width:100%;">'; foreach ($response->items->item as $value) { echo('<div style="display:inline-block;"> <img src="'.$value->imageUrl.'" width=200><br>'); echo($value->description."<br>"); echo($value->url."</div>"); }; echo '</div>'; ?> 

надеюсь, это поможет

 <?php $array = array(); $array[] = array('name'=>'Name 1', 'id'=>'w', 'spec'=>'rrr'); $array[] = array('name'=>'Name 2', 'id'=>'x', 'spec'=>'sss'); $array[] = array('name'=>'Name 3', 'id'=>'y', 'spec'=>'ttt'); $array[] = array('name'=>'Name 4', 'id'=>'z', 'spec'=>'uuu'); function horizontal_table($array, $key){ $count = count($array); $return = ""; for($i=0; $i<$count; $i++){ $return .= "<td>"; if(isset($array[$i][$key])){ if(!empty($array[$i][$key])){ $return .= $array[$i][$key]; } else { $return .= "&nbsp;"; } } else { $return .= "&nbsp;"; } $return .= "</td>"; } return $return; } ?> <table border="1px solid #000"> <tr> <td>&nbsp</td> <?php echo horizontal_table($array, 'name'); ?> </tr> <tr> <td>Item Id</td> <?php echo horizontal_table($array, 'id'); ?> </tr> <tr> <td>Item Spec</td> <?php echo horizontal_table($array, 'spec'); ?> </tr> </table> 

Вот как я это делаю.