Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当文件不存在时,我需要停止循环';不存在_Php_Loops - Fatal编程技术网

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

Php 当文件不存在时,我需要停止循环';不存在,php,loops,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"> <

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

对于这种情况,有一个名为
file\u exists()
的函数。

怎么办

$dir='/images';
$imgs=scandir($dir);
foreach($imgs作为$img)
{
如果($img!='.&&$img!=''..'))
{
回声';
}
}

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

$i = 1;
while(file_exists('./images/image' . $i . '.jpg')){
    echo '<img src="images/image' . $i . '.jpg">';
    $i++;
}
$i=1;
而(文件_存在('./images/image'.$i.'.jpg')){
回声';
$i++;
}

要回答您的问题:

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;
    }
}

对于($i=1;$iDepending on my application),我通常更喜欢使用is_file()。file_exists()对于目录也将返回true。抱歉,伙计们,在edit中添加了我当前的方法。在
else
子句中,添加一个
break
。但是,如果您事先不知道图像的数量,则使用
while
循环更好。或者甚至更好,而不是检查文件是否存在,而是检查文件是否不存在并断开这样,如果(文件_存在(…){…}),就不需要
else
else break;
很好地抓住了这句话。不幸的是,似乎
文件_存在
不理解URL,所以我有更大的问题。明白了。我想问你想做什么是我的下一个问题。如果你试图连接到远程服务器,你可以使用cURL远程抓取它们。但是如果你可以在在同一台服务器上,您可以像其他人建议的那样,用一个或scandir替换for循环。我打算建议类似的东西。只需扫描现有文件并输出这些文件。
$i = 1;
while(file_exists('./images/image' . $i . '.jpg')){
    echo '<img src="images/image' . $i . '.jpg">';
    $i++;
}
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'">