我试图限制foreach循环的迭代,以便只显示文件夹中包含的4个项目,而不是全部,但是此时它仍然显示所有项目:
<?php
$dir = 'images';
$images = scandir($dir);
$i=0;
foreach($images as $file){
if ($i == 4) {
break;
}
$pos = strpos($file, '-s.jpg');
if ($pos !== false) {
echo '<a href="/images/'.$file.'"><img src="/images/'.$file.'"/></a>';
} // end if strpos
$i++;
} // end foreach
?>
答案 0 :(得分:1)
foreach
循环遍历所有数组。因此,您需要创建一个for
循环才能使其正常工作。这种方式应该是好的:
<?php
$dir = 'images';
$images = scandir($dir);
for($i=0;$i<4;$i++){
$pos = strpos($images[$i], '-s.jpg');
if ($pos !== false) {
echo '<a href="/images/'.$images[$i].'"><img src="/images/'.$images[$i].'"/></a>';
} // end if strpos
} // end for
?>
答案 1 :(得分:0)
这样做,必须在strpos检查中包含$ i ++,并更改为&#34; if($ i&gt; 4){...}&#34;:
<?php
$dir = 'images';
$images = scandir($dir);
$i=1;
foreach($images as $file){
if ($i>4){
break;
}
$pos = strpos($file, '-s.jpg');
if ($pos !== false) {
echo '<a href="/images/'.$file.'"><img src="/images/'.$file.'"/></a>';
$i++;
} // end if strpos
} // end foreach
?>