0

我对 php 很陌生,我想遍历根文件夹中的图像目录并将这些图像发布到网页。我正在使用以下代码来执行此操作:

<?php
$dir = "images/*.jpg";
$images = glob( $dir );
foreach( $images as $image ):
  echo "<img src='" . $image . "' />";
endforeach;
?>          

我的问题是如何在不创建多个目录变量的情况下修改此代码以发布多个 .jpg 图像,例如带有 .jpeg 扩展名的 .gif 和 jpg?

另外,有没有更有效的方法来发布这些图像?

非常感谢!

4

3 回答 3

0

不聪明的蛮力方法是只为所有不同的图像类型运行循环。

$dir = "images/*.jpg";
$images = glob( $dir );
foreach( $images as $image ):
  echo "<img src='" . $image . "' />";
endforeach;
$dir = "images/*.png";
$images = glob( $dir );
foreach( $images as $image ):
  echo "<img src='" . $image . "' />";
endforeach;
$dir = "images/*.gif";
$images = glob( $dir );
foreach( $images as $image ):
  echo "<img src='" . $image . "' />";
endforeach;

etc...
于 2013-10-27T21:24:55.523 回答
0

一种优雅的方法是创建一个数组,然后对其进行迭代。

<?php
$imgs = array("images/*.jpg","images/*.gif","images/*.pnj");
foreach( $imgs as $type ){
   $images = glob( $type );
   foreach( $images as $image ):
      echo "<img src='" . $image . "' />";
   endforeach;
endforeach;
?>  
于 2013-10-27T21:28:18.983 回答
0

当您构建一个数组($images 是一个数组)时,您可以将新文件推送到该数组。

$file_extensions = ['jpg', 'png'];

$images_total = [];
foreach ( $file_extensions as $extension ) {
    $dir = "images/*." . $extension;
    $images = glob( $dir );
    foreach $images as $image {
        $images_total[] = $image;
    }
}

现在使用您的最终代码:

<?php
foreach( $images_total as $image ):
    echo "<img src='" . $image . "' />";
endforeach;
?>

我没有测试它,但这是一个想法:)

我在输入时出现了回复: 作为不同,在我的方法中,您可以在开始打印 HTML 之前构建一个包含文件夹中每个文件的数组。这可能允许您在输出给用户之前洗牌或操作数组:)

于 2013-10-27T21:29:43.457 回答