首页 > 解决方案 > PHP - 用嵌套循环关闭 div

问题描述

我有一个包含大约 400 张图像的文件夹。我想把它们放在一个页面上,一次只放八个。这意味着我将所有图像都放在同一页面上,但将八张图像分成几部分,包装在这样的盒子中:

<div class="eightbox">
	<img src="image1">
	<img src="image2">
	<img src="image3">
	<img src="image4">
	<img src="image5">
	<img src="image6">
	<img src="image7">
	<img src="image8">
</div>
<div class="eightbox">
	<img src="image9">
	<img src="image9">
	<img src="image10">
	<img src="image11">
	<img src="image12">
	<img src="image13">
	<img src="image14">
	<img src="image15">
</div>

现在,到目前为止,我的代码产生了一个输出,但没有关闭“八盒”,因此每个新的 div 都在另一个里面。

这是我的代码:

<?php
$files = glob("images/*.*"); //loads all the images from my folder into an array

$y = ceil(count($files)/8); // The amount of images divided by eight and rounded up
$z = 1; //This counter makes the array continue outside the loop

for ($i=1; $i<$y; $i++)
{
	echo '<div class=\'eightbox\'>';
	
	for ($q=0; $q<8; $q++)
	{
		$num = $files[$z];
		echo '<img src=\'' . $num . '\' >';
		$z++;
	}
	
	echo '</div>';
}
?>

我希望这对您有任何意义,并提前感谢您的帮助!

编辑:根据大众的需求,这是我使用 chrome 获得的代码 截图:我的代码截图

标签: phpjoomla

解决方案


另一种方法是将文件分成 8 个块( using array_chunk()),然后一次输出每个块......

$split = array_chunk($files, 8);
foreach ( $split as $div )  {
    echo '<div class=\'eightbox\'>';

    foreach ($div as $file )    {
        echo '<img src=\'' . $file . '\' />';
    }

    echo '</div>';
}

implode()用于输出数据...

$split = array_chunk($files, 8);
foreach ( $split as $div )  {
     echo '<div class=\'eightbox\'><img src=\''.
          implode('\' /><img src=\'', $div).
          '\' /></div>';
}

恕我直言,可读性较差,但更紧凑。


推荐阅读