当文件不存在时,我需要循环停止

时间:2013-01-17 20:47:10

标签: php loops

我的/images/目录中有一组相关的图像,按顺序命名为image1.jpg,image2.jpg,image3.jpg等...

我正在尝试使用循环使用PHP在我的标记中输出图像。但是由于图像数量不同,我需要它在到达目录中的最后一个图像文件时停止。

假设我有5张图片,我希望它只输出:

<img src="images/image1.jpg">
<img src="images/image2.jpg">
<img src="images/image3.jpg">
<img src="images/image4.jpg">
<img src="images/image5.jpg">

如果我将image6.jpg添加到目录中,它应该自动添加到标记中。你是怎么做到的?

我当前的方法

for ( $i=1; $i<100; $i++ ) {

    if ( file_exists('http://localhost/images/image' . $i . '.jpg') ) {
        echo '<img src="http://localhost/images/image' . $i . '.jpg'">';
    }
}

4 个答案:

答案 0 :(得分:3)

scandir怎么办?

$dir    = '/images';
$imgs = scandir($dir);

foreach($imgs as $img)
{
  if($img != '.' && $img != '..')
  {
    echo '<img src="http://localhost/images/'.$img.'">';
  }
}

答案 1 :(得分:3)

此代码段将生成所需的结果:

$i = 1;
while(file_exists('./images/image' . $i . '.jpg')){
    echo '<img src="images/image' . $i . '.jpg">';
    $i++;
}

答案 2 :(得分:2)

对于这样的场合,有一个名为file_exists()的函数。

答案 3 :(得分:1)

回答你的问题:

for ( $i=1; $i<100; $i++ ) {

    if ( file_exists('http://localhost/images/image' . $i . '.jpg') ) {
        echo '<img src="http://localhost/images/image' . $i . '.jpg">';
    } else {
        break;
    }
}

但是你的例子中有一个额外的单引号,所以它将输出:

<img src="images/image1.jpg'">
<img src="images/image2.jpg'">
<img src="images/image3.jpg'">
<img src="images/image4.jpg'">
<img src="images/image5.jpg'">