Как зациклить сетку в PHP - PullRequest
0 голосов
/ 13 июня 2018

введите описание изображения здесь

<?php foreach($posts as $post) : ?>
    <div class="col-md-4">
        <h3><?php echo $post['title']; ?></h3>
        <small class="post-date">Posted on: <?php echo $post['created_at']; ?> in <strong><?php echo $post['name']; ?></strong></small>
    </div>
<?php endforeach; ?>

проблема, с которой я сталкиваюсь каждый раз, когда цикл повторяет один и тот же результат

, как показано ниже: введите изображениеописание здесь

Мой вопрос, может ли кто-нибудь помочь мне с циклом PHP, работающим лучше моего и не оставляющим никаких синтаксических ошибок при любом количестве изображений?

1 Ответ

0 голосов
/ 13 июня 2018

Я изменил ваш код, он выглядит довольно много, но это потому, что мне пришлось создать массив для имитации данных, которые вы получаете.

//create an array that contains the column sizes we want in order
<?php $gridLayoutConfig = array("col-md-12", "col-md-8", "col-md-4", "col-md-3", "col-md-3", "col-md-3"); ?>
//here I am simulating data since I dont have your data
<?php $posts = array(
array("title" => "Mean Streets", "name" => "Meaner Streets", "created_at" => "0000"), 
array("title" => "Mean Streets 2", "name" => "Meaner Streets 2" , "created_at" => "0000"), 
array("title" => "Mean Streets 3", "name" => "Meaner Streets 3", "created_at" => "0000"),
array("title" => "Mean Streets 4", "name" => "Meaner Streets 4", "created_at" => "0000"),
array("title" => "Mean Streets 5", "name" => "Meaner Streets 5", "created_at" => "0000"),
array("title" => "Mean Streets 6", "name" => "Meaner Streets 6", "created_at" => "0000")
);  ?>
<?php $i = 0; ?>
//create container row outside the foreach
<?php echo "<div class='row'>"; ?>
<?php foreach($posts as $post) : ?>
//set divs class to whatever count is currently (0 = "col-md-12", 1 = "col-md-8")
//divide count by how many entries in our gridLayoutConfig  by whatever $i that means when we reach the last array entry $i % count($gridLayoutConfig) roll back around to equal 0 starting the layout again.
<?php echo '<div class="'.$gridLayoutConfig[$i % count($gridLayoutConfig)].'">' ?>
        <h3><?php echo $post['title']; ?></h3>
        <small class="post-date">Posted on: <?php echo $post['created_at']; ?> in <strong> 
        <?php echo $post['name']; ?></strong></small>
    </div>
<?php $i++; ?>

<?php endforeach; ?>
<?php echo "</div>"; ?>

Также добавлен PHPFiddle для лучшей демонстрации открытия ссылки нажмите F9чтобы запустить, проверьте инспектора, и вы увидите, что у каждого div есть правильный класс, который он не будет отображать должным образом в скрипте, поскольку в него не включен загрузчик, но он должен нормально работать на вашей собственной странице.

http://phpfiddle.org/main/code/aei9-tw86

Вы видите в скрипте php, когда мы дойдем до «Mean Streets 7», $ gridLayoutConfig снова начинается с начала ($ gridLayoutConfig [0]) и повторяет шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...