1

目前,使用下面的代码,我的数据如下所示:

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

所以它需要计算类别的数量,进行计算,并将代码呈现为三列。

4

3 回答 3

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 以使它们彼此并排显示。

于 2012-04-25T11:52:10.470 回答
0

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

于 2012-04-25T11:37:09.203 回答
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>";

希望对你有帮助

于 2012-04-25T11:38:04.847 回答