从PHP foreach在一行上设置三个div

时间:2014-02-17 23:42:50

标签: php html

我的PHP脚本的foreach循环生成一个div元素(产品信息和图像宽度为270px)到一个更大的div(宽度900px)。每个新产品信息div都在新行上,但我希望在一行上有2或3个div元素。所以,如果我有8个产品,他们应该是3或4行,现在我有8行......

怎么做?

我感谢任何帮助!

5 个答案:

答案 0 :(得分:2)

除了所有解决方案之外,还有一种方法可以实现这一目标。如果你在看 来自foreach循环的解决方案。你可以使用array_chunk打破数组。

<?php

$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
// It will chunk array into 3,3 values.
$newArray = array_chunk($array, 3, true);

foreach ($newArray as $value) {

    echo '<div class="separator">';
    // Iterate inner arrays. 
    foreach ($value as $innerValue) {
        echo $innerValue . ',';
    }

    echo '</div>';
}

输出: - 现在在分隔符div中,将显示3 div。

<div class="separator">1,2,3,</div>
<div class="separator">4,5,6,</div>
<div class="separator">7,8,9,</div>

Working Demo

答案 1 :(得分:1)

为什么不试试这个?例如,你想要每行三个div,然后将每三个项目包装在一个包装div中,并将所有项目浮动到左边,并使用一个明确的div结束每个包装:

$ct = 1;
foreach($array as $key=>$val){
  if($ct%3==0) echo '<div class="wrapper">'; //start wrapper div
  echo '<div style="float:left">'.$val.'</div>';
  if($ct%3==0){
    echo '<div style="clear:both"></div>';
    echo '</div>'; //close wrapper div
  } 
  $ct++;
}

答案 2 :(得分:0)

如果您希望他们全部在一行,您应该使用<span>而不是<div>请参阅http://en.wikipedia.org/wiki/Span_and_div

  

div和span之间存在多种差异。最值得注意的   差异是元素的显示方式。在标准HTML中,一个div   是一个块级元素,而span是一个内联元素。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span

  

<span>非常类似于<div>元素,但<div>是块级元素,而   <span>是内联元素。

答案 3 :(得分:0)

你应该使用包装器

echo '<div style="display: table" id="wraper">';
foreach($some as $key => $value){
  // here you generate your divs for example:
  echo '<div style="display: table-cell"></div>';
}
echo '</div>';

或者你可以在foreach中的div上使用float css param,当div在外部内容中没有空格时它们会掉到新行。

答案 4 :(得分:0)

如果你正在使用bootstrap,那么他们就有css,否则这段代码将适合你

$count=0;
foreach (array_expression as $value)
{
  if(count!=2)
  {
    <div style="float: left; margin: 0 20px 5px 0;">
      <div> // create your div here
      </div>
    </div>
    count++;
  }
  else
  {
    <div> // 3rd div
    </div>
    count=0;
  }
}