每12张图片的PHP div

时间:2010-09-06 18:51:38

标签: php foreach flickr

我有这段代码:

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
$i = 0;
    foreach($feed['items'] as $item) {
    preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
    $img_html = $matches[0];
    $img_src = $matches[1];
    $medium_url = ereg_replace("_m", "_s", $img_src);
        echo "$img_html";
    }

?>

如何让每N个图片显示在<div></div>内 例如:

<div class="container">
<img src="1.jpg" /> 
<img src="2.jpg" /> 
<img src="3.jpg" /> 
<img src="4.jpg" /> 
<img src="5.jpg" /> 
<img src="6.jpg" /> 
<img src="7.jpg" /> 
<img src="8.jpg" /> 
<img src="9.jpg" /> 
<img src="10.jpg" /> 
<img src="11.jpg" /> 
<img src="12.jpg" /> 
</div>
<div class="container">
<img src="13.jpg" /> 
<img src="14.jpg" /> 
<img src="15.jpg" /> 
<img src="16.jpg" /> 
<img src="17.jpg" /> 
<img src="18.jpg" /> 
<img src="19.jpg" /> 
<img src="20.jpg" /> 
<img src="21.jpg" /> 
<img src="22.jpg" /> 
<img src="23.jpg" /> 
<img src="24.jpg" /> 
</div>

等...

任何想法?

非常感谢!!!

6 个答案:

答案 0 :(得分:2)

您可以查看%12。在循环中添加一个计数器$j,在每个循环中递增$j

$j % 12 === 0时,您必须通过添加</div><div class="container">更改您的div。

不要忘记第一个和最后一个<div>标记。

答案 1 :(得分:1)

应该这样做!

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
    $i = 0;
    echo "<div class='container'>";
    foreach($feed['items'] as $item) 
    {
         if($i % 12 === 0)
              print "</div><div class='container'>";
         preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
         $img_html = $matches[0];
         $img_src = $matches[1];
         $medium_url = ereg_replace("_m", "_s", $img_src);
         echo "$img_html";
         $i++;
    }
    print "</div>";
?>

答案 2 :(得分:1)

关于double div:移动if语句,检查是否有一个余数,在增加计数器的语句之下,并且它不会创建双div:

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
$i = 0;
echo "<div class='container'>";
foreach($feed['items'] as $item) 
{
     preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
     $img_html = $matches[0];
     $img_src = $matches[1];
     $medium_url = ereg_replace("_m", "_s", $img_src);
     echo "$img_html";
     $i++;
     if($i % 12 === 0)
          print "</div><div class='container'>";
}
print "</div>";
?>

答案 3 :(得分:0)

你有$i=0,但你没有使用它。也没有12行分页算法。如何在循环中的某个地方尝试一些$i++并考虑在某处插入if ($i==12)if ($i%12)的位置。对不起,我不打算用勺子喂。这是教科书中的基本问题。

答案 4 :(得分:0)

不使用foreach,而是使用带有计数器的简单for循环,然后在计数器上使用MOD来确定当前迭代是否可被N整除。

MOD:http://php.net/manual/en/internals2.opcodes.mod.php

For Loop:http://www.tizag.com/phpT/forloop.php

答案 5 :(得分:0)

添加其他人所说的话

  • 你应该经常检查回报 使用前preg_match的值 $match
  • ereg_replace已弃用。使用 而是preg_replace。既然你是 只是做一个文本替换,你 应该使用str_replace