Как сделать горизонтальный цикл в PHP - PullRequest
1 голос
/ 15 февраля 2011

Токовая петля ниже дает результат в следующем виде:

<?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 и более.

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

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

Ответы [ 4 ]

2 голосов
/ 15 февраля 2011

Вы можете сделать много вещей, чтобы достичь этого. Лучший способ (я думаю ..) - создать 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>
0 голосов
/ 09 июня 2011
<?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>

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

0 голосов
/ 15 февраля 2011
    <?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>';

    ?>

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

0 голосов
/ 15 февраля 2011

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

По сути, вы модифицируете *Функция 1007 * для правильного размещения данных, которые вы хотите отобразить (ссылки, изображения и т. Д.), А затем просто наберите addItem() для отображения каждого элемента.Затем outputItemTable() выведет таблицу с правильно сгруппированными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...