Вывод изображений в папку и очистка float после каждых 6 возвращенных в цикле в PHP - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь сосчитать изображения в своей папке и хочу очистить поплавок после каждых 6 изображений, возвращаемых из папки.Вот код, который я получил до сих пор, но он выдает больше, чем сумма, которую я хотел бы получить за него.Может быть, кто-нибудь может привести меня к решению?Заранее спасибо.Ниже мой код.

<?php
$i = 0;
$dirname = "images"; 
$images = scandir($dirname);
$filecount = count(glob("images/". "*.png"));
 //echo $filecount;

$ignore = Array(".", "..", "otherfiletoignore");
foreach($images as $curimg){
if(!in_array($curimg, $ignore)) {

if ($i % 6 === 0){

echo "<div style='clear:both;></div>'";

}

echo "<div style='float:left;'><img src='images/",$curimg."'"," /></div>";

}
}

?>

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Этот код будет выплевывать строку echo "<div style='clear:both;></div>'"; на каждой итерации.Это потому, что вы нигде не увеличили $i.$i % 6 === 0 всегда будет истинным, потому что $i всегда равно нулю.

Изменение:

if(!in_array($curimg, $ignore)) {

if ($i % 6 === 0){

... на:

if(!in_array($curimg, $ignore)) {
$i++;
if ($i % 6 === 0){

... илииспользуйте for цикл вместо foreach.

0 голосов
/ 15 сентября 2011

Вы никогда не меняете значение $i, поэтому оно будет нулевым каждый раз в цикле.В этой ситуации вы хотите использовать цикл for вместо цикла foreach.

$images = glob("images/*.png");
$filecount = count($images);
$ignore = Array(".", "..", "otherfiletoignore");
for ($i = 0; $i < $filecount; $i++){
    if(!in_array($images[$i], $ignore)) {
        if ($i % 6 === 0){
                echo "<div style='clear:both;></div>'";
        }
        echo "<div style='float:left;'><img src='images/",$images[$i]."'"," /></div>";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...