Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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中显示3种图像的逻辑问题_Php_File_Display - Fatal编程技术网

在php中显示3种图像的逻辑问题

在php中显示3种图像的逻辑问题,php,file,display,Php,File,Display,我制作了一个网站,人们可以发布图片,该网站通过foreach和for循环自动显示每一张图片。我制作了一个网站,在底部显示旧图片,在顶部显示新图片,如instagram或facebook。该网站只对png和jpg类型的图片进行了完美的处理,但我添加了jpeg,现在它不起作用,如果添加了新的jpeg,我们不会看到以前发布过的任何图片。要使用w3school方式上传图片im,请执行以下操作: 这是我做的: <?php // filename = photo/NAME.png

我制作了一个网站,人们可以发布图片,该网站通过foreach和for循环自动显示每一张图片。我制作了一个网站,在底部显示旧图片,在顶部显示新图片,如instagram或facebook。该网站只对png和jpg类型的图片进行了完美的处理,但我添加了jpeg,现在它不起作用,如果添加了新的jpeg,我们不会看到以前发布过的任何图片。要使用w3school方式上传图片im,请执行以下操作:

这是我做的:

<?php
      // filename = photo/NAME.png
      foreach (glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE) as $filename)
      {
        $numberPhoto++;
      }
      echo "<script>console.log('Il y a $numberPhoto images');</script>";

      for ($i = $numberPhoto; $i > 0; $i--)
      {
        $filePath = "photo/$i.png";
        if (file_exists($filePath))
        {
        echo "<script>console.log('+1 img et cest $i.png');</script>
        <div class='imgContainer'>
          <hr class='leftrow'>
          <div class='img'>
            <img class='theImg' src='$filePath'>
            <a href='$filePath' download='$filePath'>
              <button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
            </a>
            <hr class='botrow'>
        </div>
            <hr class='rightrow'>
        </div>
        <script>console.log('Image $i.png ajouté');</script>
        ";
        break;
        }

        $filePath = "photo/$i.jpg";
        if (file_exists($filePath)){
          echo "<script>console.log('+1 img et cest $i.jpg');</script>
          <div class='imgContainer'>
            <hr class='leftrow'>
            <div class='img'>
              <img src='$filePath'>
              <a href='$filePath' download='$filePath'>
                <button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
              </a>
              <hr class='botrow'>
          </div>
              <hr class='rightrow'>
          </div>
          <script>console.log('Image $i.jpg ajouté');</script>
          ";
        }
        else{
          $filePath = "photo/$i.jpeg";
          echo "<script>console.log('+1 img et cest $i.jpeg');</script>
          <div class='imgContainer'>
            <hr class='leftrow'>
            <div class='img'>
              <img src='$filePath'>
              <a href='$filePath' download='$filePath'>
                <button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
              </a>
              <hr class='botrow'>
          </div>
              <hr class='rightrow'>
          </div>
          <script>console.log('Image $i.jpeg ajouté');</script>
          ";
        }
      }
      ?>
我也试过这个

if (file_exists($filePath))
{
// png
}
else if (!file_exists($filePath))
{
// jpg
}
else
{
// jpg
}
还有很多我不记得的事情


当我试图解决这个问题时,我的大脑就像冻僵了一样。我真的不知道该怎么做才能解决这个问题。首先,你可能需要以一种高效和可重用的方式重新构造代码。 我已成功修复了您的代码,但没有再次重复代码,请尝试:

<?php
  // filename = photo/NAME.png

  $photos = glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE);

  // to sort by modified date
  usort($photos, function($a,$b){return filemtime($b) - filemtime($a);});

  $numberPhoto = count($photos);

  foreach ($photos as $photo) {
    $extension = pathinfo($photo, PATHINFO_EXTENSION);
    echo $extension;

    switch($extension){
        case 'jpg':
            $filePath = $photo; // do your logic for each type if you want
            break;

        case 'png':
            $filePath = $photo; // do your logic for each type if you want
            break;

        case 'jpeg':
            $filePath = $photo; // do your logic for each type if you want
            break;

        default:
            $filePath = $photo; // do your logic for each type if you want
    }

    echo "<script>console.log('+1 img et cest '" . $filePath . ");</script>
    <div class='imgContainer'>
      <hr class='leftrow'>
      <div class='img'>
        <img class='theImg' src='$filePath'>
        <a href='$filePath' download='$filePath'>
          <button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
        </a>
        <hr class='botrow'>
    </div>
        <hr class='rightrow'>
    </div>
    <script>console.log('Image '" . $filePath . " ajouté');</script>
    ";

  }
  ?>

Thx这是可行的,但这段代码不会像instagram一样,在页面底部以较旧的顺序显示,在顶部以新的顺序显示,您能解释一下开关中的默认值吗?我真的不明白它有什么用处。你可以通过在
glob
行之后添加这一行,按
modified\u日期进行排序:
usort($photos,function($a,$b){return filemtime($a)-filemtime($b);})$photos=glob(“photo/.{jpg,png,jpeg}”,glob_括号);usort($photos,function($a,$b){returnfilemtime($a)-filemtime($b);})$numberPhoto=计数($photo);我做了这个,但它仍然不起作用,我可以像以前那样简单地做一个fror循环,通过哪个标志反向计数,你想对它和asc或desc排序吗?我现在按desc顺序用
modified_date
对它排序,请检查
<?php
  // filename = photo/NAME.png

  $photos = glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE);

  // to sort by modified date
  usort($photos, function($a,$b){return filemtime($b) - filemtime($a);});

  $numberPhoto = count($photos);

  foreach ($photos as $photo) {
    $extension = pathinfo($photo, PATHINFO_EXTENSION);
    echo $extension;

    switch($extension){
        case 'jpg':
            $filePath = $photo; // do your logic for each type if you want
            break;

        case 'png':
            $filePath = $photo; // do your logic for each type if you want
            break;

        case 'jpeg':
            $filePath = $photo; // do your logic for each type if you want
            break;

        default:
            $filePath = $photo; // do your logic for each type if you want
    }

    echo "<script>console.log('+1 img et cest '" . $filePath . ");</script>
    <div class='imgContainer'>
      <hr class='leftrow'>
      <div class='img'>
        <img class='theImg' src='$filePath'>
        <a href='$filePath' download='$filePath'>
          <button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
        </a>
        <hr class='botrow'>
    </div>
        <hr class='rightrow'>
    </div>
    <script>console.log('Image '" . $filePath . " ajouté');</script>
    ";

  }
  ?>