跳过循环

时间:2017-09-02 08:56:55

标签: php

解决this问题之后。

我的代码: -

<?php for ($i = 1; $i <= 9; $i++):?>
<div class="col-md-2">
  <div class="thumbnail">
    <a href="<?php echo $details . $i;?>.php">
      <img src="<?php echo $images . $i;?>.png" alt="<?php echo $i;?>">
    </a>
  </div>
</div>
<?php endfor; ?>    

现在假设现在图像为 8.png ,因此for loop应该跳过它并转到下一个,而不显示任何图像。

Result is. 我想要this

不应显示红色部分。

5 个答案:

答案 0 :(得分:2)

由于您在comments中声明图片的网址为localhost/downloads/vf/images,我将假设使用$_SERVER['DOCUMENT_ROOT']来处理公众以外的文件夹(这可能是某些内容)与C:\users\chirag\htdocs\类似,但$_SERVER变量应该注意这一点。如果不是这样,请找到完整路径并使用它 - 因为file_exists()需要系统路径,而不是公共路径/网址。这也假设您使用$images变量的相对路径,这意味着您有$images = "/downloads/vf/images/";而不是$images = "localhost/downloads/vf/images/";

有了这个假设,我们现在可以使用file_exists() - 因为它采用系统路径,而不是URL。

<?php 
$images = "/downloads/vf/images/";
for ($i = 1; $i <= 9; $i++):
    if (!file_exists($_SERVER['DOCUMENT_ROOT'].$images.$i.".png"))
        continue; // Skip this iteration if it can't find the file 
    ?>
    <div class="col-md-2">
      <div class="thumbnail">
        <a href="<?php echo $details . $i;?>.php">
          <img src="<?php echo $images . $i;?>.png" alt="<?php echo $i;?>">
        </a>
      </div>
    </div>
<?php endfor; ?>   

答案 1 :(得分:0)

如果图片存在或不存在,则必须添加检查条件,有某些方法,例如file_exists

<?php for ($i = 1; $i <= 9; $i++): 
    if(file_exists("file_path")){ ?>
      <img src="<?php echo $images . $i;?>.png" alt="<?php echo $i;?>">
<? { php endfor; ?>

这可能会对您有所帮助:How to check if image exists

答案 2 :(得分:0)

使用此代码

File_exists是文件是否存在的功能检查

<?php for ($i = 1; $i <= 9; $i++): 
   if (file_exists($images.$i.'.png')) { ?>
        <img src="<?php echo $images . $i;?>.png" alt="<?php echo $i;?>">

<?php } endfor; ?>

查看此内容以获取更多详细信息

PHP: How to check if image file exists?

答案 3 :(得分:-1)

您需要使用continue指令。我还建议您放弃使用:endfor以及所有额外的PHP开始/结束块,以提高可读性和性能。

<?php
  for ($i = 1; $i <= 9; $i++) {
    if (!is_readable($images . $i . '.png'))
      continue;

    echo "<img src=\"${images}${i}.png\" alt=\"$i\">";
  }
?>

答案 4 :(得分:-1)

如果在任何循环中使用关键字ifbc "$max > $s" && echo "true, it's greater" || echo "no, it's less or =" ,则会跳过此后的其余迭代。

continue

此关键字适用于许多语言。

同样在PHP中,<?php for ($i = 1; $i <= 9; $i++): ?> <?php if ($i == 8) continue;> <img src="<?php echo $images . $i;?>.png" alt="<?php echo $i;?>"> <?php endfor; ?> 接受一个数字参数,告诉它应该跳过多少次迭代。

PHP continue