我有一个PHP代码,它使用文件夹中的每个图像并回显我页面上的网址。
我需要帮助的是让PHP代码在每次加载页面时随机化URL列表。
我的代码是:
<?php
if ($handle = opendir('images')) {
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
$thelist .= '<div data-delay="5"><img src="images/'.$file.'"></div>';
}
}
closedir($handle);
}
?>
<?=$thelist?>
非常感谢
答案 0 :(得分:2)
最简单的解决方案是将所有文件名放入一个数组中,然后使用shuffle()
将其混合起来。然后,您可以迭代数组并输出图像。看起来应该是这样的:
<?php
$thelist = "";
if ($handle = opendir('images')) {
$images = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
array_push($images, 'images/'.$file);
}
}
closedir($handle);
shuffle($images);
foreach ($images as $image) {
$thelist .= '<div data-delay="5"><img src="'.$image.'"></div>';
}
echo $thelist;
}
?>
使用glob()
代替opendir()
,您可以显着缩短代码,因为glob()
会返回一个数组,然后您只需要对该数组进行随机播放。
答案 1 :(得分:0)
将您的文件链接放入数组中并使用函数shuffle()
对其进行随机播放<?php
if ($handle = opendir('images')) {
$fileTab = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fileTab[] = $file;
}
}
closedir($handle);
shuffle($fileTab);
foreach($fileTab as $file) {
$thelist .= '<div data-delay="5"><img src="images/'.$file.'"></div>';
}
}
?>
<?=$thelist?>
答案 2 :(得分:0)
不是直接在while循环中创建div,而是仅使用它来存储Array中的所有url。然后shuffel那个数组,并使用foreach循环来填充$ thelist。
答案 3 :(得分:0)
为什么不使用glob()
?
$images = glob('images/*.{jpg,png,gif}', GLOB_BRACE);
shuffle($images);
foreach($images as $image) {
echo '<div data-delay="5">
<img src="', $image ,'">
</div>';
}