PHP限制文件夹项列表的循环迭代

时间:2018-03-11 14:25:19

标签: php for-loop foreach

我试图限制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
?>

2 个答案:

答案 0 :(得分:1)

php中的

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
?>