我正在使用DirectoryIterator列出文件。在这种情况下,我的目录包含19个文件。
我需要创建一个列表,将7个文件包装到<div>
。
我一定很累,因为我无法做这个简单的任务。
我的代码已更新,以反映以下建议:
$i = 0;
echo '<div class="first_div">';
foreach ($dir as $fileinfo) {
if ($fileinfo->isFile()) {
if(($i % 7 == 0) && ($i > 0) )
echo '</div><div>';
echo 'My file';
$i++;
}
}
echo '</div>';
有任何帮助。
答案 0 :(得分:7)
这些方面的东西:
echo '<div>';
$i = 0;
foreach ($dir as $fileinfo) {
if($i % 7 == 0 && $i != 0) {
echo '</div><div>';
}
// do stuff
$i++;
}
echo '</div>';
答案 1 :(得分:3)
或类似
$chunk_size = 7;
foreach (array_chunk($dir, $chunk_size) as $chunk) {
echo '<div>';
foreach ($chunk as $fileinfo) {
// echo list item $fileinfo here
}
echo '</div>';
}
答案 2 :(得分:2)
尝试使用mod运算符(%)来确定当前文件号是否为第7个:
echo "<div>";
$i = 0;
foreach ($dir as $fileinfo) {
// Remainder is 0, so its the first of 7 files.
// Skip this for the first one, or we'll get a blank div to start with
if($i % 7 == 0 && $i>0) echo "</div><div>";
echo $filenamehere;
$i++;
}
echo "</div>";
(代码未经测试但应该有效)
编辑:为$ i使用了一个独立的计数器,因为索引似乎从2开始,而不是预期的0。
答案 3 :(得分:1)
类似于此的Somesthing:
$c = 0;
foreach ($files as $file) {
echo $file;
if ($c % 7 == 0) {
//7th file
}
$c++;
}
答案 4 :(得分:1)
使用mod 7
$counter += 1;
if($counter % 7 = 0)
//New div
对于这个i Php的语法不是100%肯定,但必须是一些
答案 5 :(得分:1)
您可以使用array_chunk()函数将数组拆分为块。
<?
$dir_chunks = array_chunk($dir, 7);
foreach($dir_chunks as $dir)
{
echo '<div>';
foreach ($dir as $fileinfo) {
if ($fileinfo->isFile()) {
// build list here
}
}
echo '</div>';
}
?>
答案 6 :(得分:1)
或者(丢弃%运算符并输入更多SPL)
<?php
$path = '......';
$nrit = new NoRewindIterator(new DirectoryIterator($path));
while ( $nrit->valid() ) {
echo "<div>\n";
foreach( new LimitIterator($nrit, 0, 7) as $it ) {
echo ' ', $it, "\n";
}
echo "</div>\n";
}
答案 7 :(得分:0)
使用此代码:
if(($i-2) % 7 == 0)