如何在PHP中进行水平循环

时间:2011-02-15 09:59:32

标签: php css loops

下面的当前循环产生结果:

<?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>

我需要完成的是循环结果,以便每个项目从左到右是水平的。 e.g。

 <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. 当有更多项目时,每个项目将显示在下一行,就像它在第一行显示的那样。
  3. 什么是项目?

    一个项目包括:

     (image)
     description
     (url)
    

    有多少项?

    最多20个或更多。

      

    问题结束

    好的,大家,问题的结尾。希望得到这方面的帮助,这是有效的。

4 个答案:

答案 0 :(得分:2)

你可以做很多事情来完成它。最好的方式(我认为..)正在创建一个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>

答案 1 :(得分:0)

我不久前为客户建立了这个,我认为它正是你需要的: Column-focused Tables

基本上,您修改addItem()功能以正确调整您要显示的数据(链接,图像等),然后只为每个要显示的项目调用addItem()。然后outputItemTable()将输出一个表,其中数据组合在一起。

答案 2 :(得分:0)

    <?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>';

    ?>

我希望这有帮助

答案 3 :(得分:0)

<?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>

我就是这样做的。