首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php和bootstrap的动态网格

使用php和bootstrap的动态网格
EN

Stack Overflow用户
提问于 2019-01-24 21:23:18
回答 2查看 546关注 0票数 0

我想用php和bootstrap创建一个动态网格。例如

案例1 =>如果我总共有6条记录,则行1包含col md-4网格,行2包含col md-4网格。案例2 =>如果我总共有5条记录,则行1包含col md-4网格,行2包含col md-6网格Case 3 =>如果我总共有4条记录,则行1包含col md-4网格,行2包含col md-12网格

我不知道该怎么做,有什么解决方案吗?

代码语言:javascript
复制
<?php foreach($Banners as $i=>$DATA){
    if($count%3==1){
        echo "<div class='row'>";
        $lgclass = "col-lg-4";
    }
    if($count%4==0){
        $lgclass = "col-lg-6";
    }
    if($count%5==0){
        $lgclass = "col-lg-6";
    }
?>
<div class="<?php echo $lgclass;?> col-xs-12 col-sm-12" <?php echo $count;?>>
    <h2 class="section-title" >&nbsp;</h2>
    <a href="http://mymegarealty.net/index.php?option=com_jointeam">
        <div class="full-width"> 
            <img src="<?php echo $Imageurl;?>" class="img-responsive" style="height:250px;;display:unset;">
        </div>
    </a>
</div>
<?php 
if($count%3==0){
    echo "</div>";
} 
$count++;} ?>
EN

回答 2

Stack Overflow用户

发布于 2019-01-24 21:46:52

这将是一个更好的递归解决方案,如果你愿意,你可以这样做。我一开始写给你的逻辑,如果我遵循一个例子,就会颠覆你的需求。我的逻辑是程序化的。

代码语言:javascript
复制
<?php
/*
logic
while myElements !=0 
    if myElements > 2
        dispay row whith 3 elements
        myElements remove firs 3
    else if myElements == 2
        dispay row whith 2 elements
        myElements remove firs 2
    else if myElements == 1
        dispay row whith 1 elements
        myElements remove firs 1
end while
*/
// init my data
$data=[];
$element=5;
for($i=0;$i<$element;$i++){array_push($data,$i);}
var_dump($data);

// do code

function displayElement($data, $classAdd){
    echo "<div class='".$classAdd."'>";
    echo $data; // your cell
    echo "</div>";
}

while (sizeof($data)!=0){
    if (sizeof($data)>2){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-4");
        displayElement($data[1],"col-lg-4");
        displayElement($data[2],"col-lg-4");
        echo "</div>";
        $data=array_slice($data,3);
    }elseif (sizeof($data)==2){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-6");
        displayElement($data[1],"col-lg-6");
        echo "</div>";
        $data= array_slice($data,2);
    }elseif (sizeof($data)==1){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-12");
        echo "</div>";
        $data= array_slice($data,1);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2019-01-24 21:57:28

您应该能够使用flex简单地实现这一点。但是使用bootstrap尝试使用递归:下面的小示例

代码语言:javascript
复制
<?php

$elements = [1, 2, 3, 4];

function displ(&$el, $out = "") {
    if (count($el) === 0) {
        return $out;
    } elseif (count($el) > 3) {
        $i = 0;
        foreach ($el as $k=>$v) {
            $out .= "<div class=\"col-md-4\">" . $v . "</div>";
            unset($el[$k]);
            $i++;
            if ($i === 3) {
                return displ($el, $out);
            }
        }
        return displ($el, $out);
    } elseif (count($el) < 3) {
        foreach ($el as $k=>$v) {
            $out .= "<div class=\"col-md-" . 12 / count($el) . "\">" . $v . "</div>";
            unset($el[$k]);
        }
        return $out;
    }
}

echo displ($elements);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54347700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档