PHP变量在while循环中具有不同的值

时间:2018-05-08 19:46:32

标签: php

我正在使用以下功能显示我的图库图片:

<?php
//function call
return showImages();

//function definition
function showImages(){
  $out = "<h1>Image Gallery</h1>";
  $out .= "<ul id='images'>";
  $folder = "img";
  $filesInFolder = new DirectoryIterator($folder);
  $imgnumber = 1;
  while ($filesInFolder->valid()){
    $file = $filesInFolder->current();
    $filename = $file->getFilename();
    $src = "$folder/$filename";
    $fileInfo = new Finfo( FILEINFO_MIME_TYPE );
    $mimeType = $fileInfo->file($src);
    if ($mimeType === 'image/jpeg'){
      $out.= "<li><img id='imgnumber$imgnumber' src='$src' /></li>";
    }
    $filesInFolder->next();
    $imgnumber = $imgnumber + 1;
  }

  $out .= "</ul>";
  return $out;
}

预期的结果是每次迭代运行时 img id 增加1。我的问题是第一张图片的ID为 imgnumber4 。这是我的结果:

<h1>Image Gallery</h1>
<ul id='images'>
  <li><img id='imgnumber4' src='img/1.jpg' /></li>
  <li><img id='imgnumber5' src='img/10.jpg' /></li>
  <li><img id='imgnumber6' src='img/11.jpg' /></li>
  <li><img id='imgnumber7' src='img/12.jpg' /></li>
  <li><img id='imgnumber8' src='img/13.jpg' /></li>
  <li><img id='imgnumber9' src='img/18.jpg' /></li>
  <li><img id='imgnumber10' src='img/2.jpg' /></li>
  <li><img id='imgnumber11' src='img/27.jpg' /></li>
  <li><img id='imgnumber12' src='img/3.jpg' /></li>
  <li><img id='imgnumber13' src='img/4.jpg' /></li>
  <li><img id='imgnumber14' src='img/5.jpg' /></li>
</ul>

你能告诉我它为什么从4号开始而不是1号吗?我已经将变量$ imgnumber从开始设置为1,所以我不知道它为什么跳到4 ...

1 个答案:

答案 0 :(得分:3)

它是你的'if'语句 - 可能是有些文件不是'image / jpeg'。 只需放置

行即可
$imgnumber = $imgnumber + 1;
if语句中的