我的应用程序包含用户上传图像的图库页面。我试图使用foreach循环在页面上显示图像,但是在构建foreach循环时遇到了一些问题。
这就是HTML应该形成的方式
<div class="item">
<ul>
<li><a href="images/gallery/love1.jpg" rel="example1" ><img src="images/gallery/thumb_love1.jpg" alt="#" /></a></li>
<li><a href="images/gallery/love2.jpg" rel="example1" ><img src="images/gallery/thumb_love2.jpg" alt="#" /></a></li>
<li><a href="images/gallery/love3.jpg" rel="example1" ><img src="images/gallery/thumb_love3.jpg" alt="#" /></a></li>
<li><a href="images/gallery/love4.jpg" rel="example1"><img src="images/gallery/thumb_love4.jpg" alt="#" /></a></li>
<li><a href="images/gallery/love5.jpg" rel="example1" ><img src="images/gallery/thumb_love5.jpg" alt="#" /></a></li>
<li><a href="images/gallery/love6.jpg" rel="example1"><img src="images/gallery/thumb_love6.jpg" alt="#" /></a></li>
<li><a href="images/gallery/life1.jpg" rel="example1" ><img src="images/gallery/thumb_life1.jpg" alt="#" /></a></li>
<li><a href="images/gallery/life2.jpg" rel="example1"><img src="images/gallery/thumb_life2.jpg" alt="#" /></a></li>
<li><a href="images/gallery/life3.jpg" rel="example1"><img src="images/gallery/thumb_life3.jpg" alt="#" /></a></li>
</ul>
</div><!-- end item -->
所以基本上当LI击中9个项目时,中断并开始一个新的DIV class =“item”
以下是我一直尝试使用的PHP代码
<?php
$x = range(1,100);
$counter = 1;
foreach($x as $item):
if($item == 9) {
?>
<div class="item">
<ul>
<?php foreach($pictures->result() as $p): ?>
<li><a href="images/gallery/<?=$p->category;?>/<?=$p->photo_name;?>" rel="example1" ><img src="images/gallery/<?=$p->category;?>/thumb_<?=$p->photo_name;?>" alt="#" /></a></li>
<?php endforeach; ?>
</ul>
</div><!-- end item -->
<?php $counter = 1;
} else {
$counter++;
} ?>
<?php endforeach; ?>
我已经尝试了一切,但无法弄清楚如何使这项工作。在此先感谢您的帮助!
答案 0 :(得分:1)
你为什么要开始一个新的div?好像它应该是一个列表。因此,您可以将所有图像放在一个列表中,并使用CSS控制它们的布局。
如果这不正确,那么您要使用的是array_chunk
未经测试...
$picture_chunks = array_chunk( $pictures->result(), 9 ); // split the long array into a multidimensional array with 9 objects in each
<?php foreach( $picture_chunks as $chunk ): ?> // loop through the outer array creating the <div><ul></ul></div>
<div class="item">
<ul>
<?php foreach( $chunk as $p ): ?> //loop through the inner array creating the LIs
<li><a href="images/gallery/<?=$p->category;?>/<?=$p->photo_name;?>" rel="example1" ><img src="images/gallery/<?=$p->category;?>/thumb_<?=$p->photo_name;?>" alt="#" /></a></li>
<?php endforeach; ?>
</ul>
</div>
<?php endforeach; ?>
答案 1 :(得分:0)
如果你需要让它在每九个项目上开始一个新的div,你需要使用模数。
下面是完全未经测试的,肯定是错误的,但想法是每当你的$ p被9整除时,你就可以做一些特殊的事情,比如关闭并打开一个新的div。
for($i=0;$i<10;$i++)
{
if($i % 9)
{
<li><a href="images/gallery/<?=$p->category;?>/<?=$p->photo_name;?>" rel="example1" ><img src="images/gallery/<?=$p->category;?>/thumb_<?=$p->photo_name;?>" alt="#" /></a></li>
echo '</div>;
echo '<div>';
}else{
<li><a href="images/gallery/<?=$p->category;?>/<?=$p->photo_name;?>" rel="example1" ><img src="images/gallery/<?=$p->category;?>/thumb_<?=$p->photo_name;?>" alt="#" /></a></li>
}
}
答案 2 :(得分:0)
我认为你可能过于复杂。尝试以下。我没有添加您的图库变量,因为我无法测试它们,但它应该按照您的需要工作。
<div class="item"> <ul>
<?php
foreach(range(1,100) as $item){
if($item%9 == 0){
?></ul></div>
<div class="item"> <ul>
<?php } ?>
<li> insert gallery output here <?php echo $item ?></li>
<?php
}
?>
</ul></div>