订购三列而不是一列的数据

时间:2012-04-25 11:27:18

标签: php row

目前,根据以下代码,我的数据显示如下:

http://img27.imageshack.us/img27/8083/29769986.jpg

但我希望它显示如下:

http://img259.imageshack.us/img259/3233/24033830.jpg

显示的数据代码与第一张图像一样,是:

<div id="content">
  <?php foreach ($categories as $category) { ?>
  <div class="manufacturer-list">
    <div class="manufacturer-heading"><?php echo $category['name']; ?><a id="<?php echo $category['name']; ?>"></a></div>
    <div class="manufacturer-content">
      <?php if ($category['manufacturer']) { ?>
      <?php for ($i = 0; $i < count($category['manufacturer']);) { ?>
      <ul>
        <?php $j = $i + ceil(count($category['manufacturer']) / 4); ?>
        <?php for (; $i < $j; $i++) { ?>
        <?php if (isset($category['manufacturer'][$i])) { ?>
        <li><a href="<?php echo $category['manufacturer'][$i]['href']; ?>"><?php echo $category['manufacturer'][$i]['name']; ?></a></li>
        <?php } ?>
        <?php } ?>
      </ul>
      <?php } ?>
      <?php } ?>
    </div>
  </div>
  <?php } ?>
</div>

为了获得“HTC”文本下的“Hewlett-Packard”文本,我已将“/ 4”更改为“/ 1”,但我不知道如何将数据显示到三列(如第二张图片),而不是现在的一列(如第一张图片所示)。

提前致谢。

编辑:我真正需要的是计算并对此代码进行计算:

<?php foreach ($categories as $category) { ?>
.
.
.
<?php } ?>

因此需要计算分类数,进行计算,并将代码分为三列。

3 个答案:

答案 0 :(得分:1)

试试这个。

<div id="content">
<div class="content-column">
  <?php 
    $cols = 3; // Change to columns needed.
    $catcount = count($categories);
    $catpercol = ceil($catcount / $cols);
    $c = 0;
    foreach ($categories as $category) { 
      if ( $c == $catpercol ) {
        $c = 0;
        print "</div><div class='content-column'>";
      }
 ?>
  <div class="manufacturer-list">
    <div class="manufacturer-heading"><?php echo $category['name']; ?><a id="<?php echo $category['name']; ?>"></a></div>
    <div class="manufacturer-content">
      <?php if ($category['manufacturer']) { ?>
      <?php for ($i = 0; $i < count($category['manufacturer']);) { ?>
      <ul>
        <?php $j = $i + ceil(count($category['manufacturer']) / 4); ?>
        <?php for (; $i < $j; $i++) { ?>
        <?php if (isset($category['manufacturer'][$i])) { ?>
        <li><a href="<?php echo $category['manufacturer'][$i]['href']; ?>"><?php echo $category['manufacturer'][$i]['name']; ?></a></li>
        <?php } ?>
        <?php } ?>
      </ul>
      <?php } ?>
      <?php } ?>
    </div>
  </div>
  <?php $c++; } ?>
</div>
</div>

.content-column { float: left; width: 33.33333%; }添加到您的CSS。

详细说明: $cols = 3;可让您设置所需的列数(注意:您可能需要相应地更改CSS)。

$catcount = count($categories);为您提供要渲染的类别总数。

$catpercol = ceil($catcount / $cols);将总数均匀划分为所需的列数,最后一列的项目最终比其他列少。

$c = 0;是你的反击。它在外部foreach循环结束时增加。

在循环内,检查$c是否与$catpercol号匹配,如果匹配,则关闭当前父div并创建新父div。您最终需要尽可能多的父div,因为您需要列。只需添加适当的CSS,使它们彼此显示。

答案 1 :(得分:0)

我认为可以通过html / css创建三个列布局,而无需更改PHP代码。只需使用float:left; width: 33%即可。由于边距和边框,您还可以使用宽度属性的绝对值。

答案 2 :(得分:0)

了解以下代码,根据您的要求,代码只是根据您给定的屏幕截图提供您想要的提示http://img259.imageshack.us/img259/3233/24033830.jpg

echo "<table>";
echo "<tr>";

$i = 1;

do{

  // column range
  $range = 3;

  echo "<td>" . $i;

  if( $i % $range == 0 ){
  echo "</tr>";
  echo "<tr>";
  }

  echo "</td>";

  $i++;

}while( $i <= 10 );

echo "</tr>";
echo "</table>";

希望这会对你有所帮助