2

我的/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

4 回答 4

3

怎么样scandir

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

foreach($imgs as $img)
{
  if($img != '.' && $img != '..')
  {
    echo '<img src="http://localhost/images/'.$img.'">';
  }
}
于 2013-01-17T20:56:57.583 回答
3

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

$i = 1;
while(file_exists('./images/image' . $i . '.jpg')){
    echo '<img src="images/image' . $i . '.jpg">';
    $i++;
}
于 2013-01-17T20:58:18.677 回答
2

在这种情况下需要调用一个函数file_exists()

于 2013-01-17T20:50:33.363 回答
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'">
于 2013-01-17T22:27:16.757 回答