【问题标题】:How to do a Horizontal looping in PHP如何在 PHP 中进行水平循环
【发布时间】:2011-02-15 09:59:31
【问题描述】:

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

<?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 个或更多。

问题结束

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

【问题讨论】:

  • 你需要去掉
    形式的回声。并应用一些 css 在列中显示。
  • 这是“提前致谢”。将每个项目的内容放在浮动 div 中,并在每三个项目上使用 CSS 清除属性。
  • 这里只是一个快速提示。如果您试图在这里生成一个 html 代码,为什么不尝试对每一行使用 div 并使该 div 浮动:left
  • 是的,不是 php 问题,你应该使用 css 来做
  • 大家好,感谢您的热情回复,我有点不知所措。给我更多时间,我会尽快回答,希望当我有时间再次处理这个问题时,目前正忙于另一个问题,但感谢您回答和更正“感谢高级”。我不得不责怪那个英语老师。 :-)

标签: php css loops


【解决方案1】:

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

【讨论】:

  • 不需要'bre​​ak'类,正确的方法是在ul上设置宽度
  • 好吧.. 想象一下,您需要一个 320px 的 UL,每个 LI 的宽度为 100px,它们之间的边距为 10px。唯一的方法是创建 .break 类,否则列表将在每个第二个元素上中断...
  • 然后将宽度设置为 360px。使用您的代码,假设您希望每行显示 4 个项目:即使只是显示问题,您也必须修改代码。
  • 当我说“你需要 320px UL”时,我的意思是它应该是 320px。 360px UL 不适合。否则,你是对的..如果它可以更高,也许最好指定 UL 宽度,所以调整将是自动的。
【解决方案2】:

我不久前为一个客户构建了这个,我认为这正是您所需要的: Column-focused Tables

基本上,您修改addItem() 函数以正确适合您要显示的数据(链接、图像等),然后只需调用addItem() 即可显示每个项目。然后outputItemTable() 将输出一个表格,其中数据正确分组在一起。

【讨论】:

    【解决方案3】:
        <?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>';
    
        ?>
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:
      <?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>
      

      我就是这样做的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 2018-07-05
        相关资源
        最近更新 更多