我的PHP脚本的foreach循环生成一个div元素(产品信息和图像宽度为270px)到一个更大的div(宽度900px)。每个新产品信息div都在新行上,但我希望在一行上有2或3个div元素。所以,如果我有8个产品,他们应该是3或4行,现在我有8行......
怎么做?
我感谢任何帮助!
答案 0 :(得分:2)
<?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>
答案 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;
}
}