我对php很陌生,我想遍历根文件夹中的图像目录并将这些图像发布到网页上。我使用以下代码来执行此操作:
<?php
$dir = "images/*.jpg";
$images = glob( $dir );
foreach( $images as $image ):
echo "<img src='" . $image . "' />";
endforeach;
?>
我的问题是,如何在不创建多个目录变量的情况下修改此代码以发布超过 .jpg 张图像,例如具有 .jpeg 扩展名的 .gif 和 jpg?
另外,有没有更有效的方式来发布这些图像?
谢谢!
执行此操作
的非聪明蛮力方法是为所有不同的图像类型运行循环。
$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...
一种优雅的方法是创建一个数组,然后迭代它。
<?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;
?>
当你构建一个数组($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之前构建一个包含文件夹中每个文件的数组。这可能允许您在输出给用户之前对数组进行随机播放或操作:)