我有一个用于存储参考图像的网站页面..
目前我只是将所有图像放到我服务器上的目录中,然后php会显示我喜欢的内容。
我想问的是,每次刷新页面时,如何让它们以不同的随机顺序显示?
代码如下:
$dir = 'images';
$file_display = array ('jpg', 'jpeg', 'png', 'gif');
if (file_exists($dir) ==false) {
echo 'Directory \'', $dir, '\' not found';
} else {
$dir_contents = scandir($dir);
foreach ($dir_contents as $file) {
$file_type = strtolower(end(explode('.', $file)));
if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />';
}
}
}
答案 0 :(得分:8)
为了保证订单不同,每次都要求您携带有关页面加载之间显示顺序的数据。 然而,这不一定是您所需要的 - 如果您每次只是随机化订单,那么目录中的图像数量越多,您获得相同订单两次的机会就越低。
您只需使用shuffle()
随机化数组的顺序:
$dir = 'images';
$file_display = array ('jpg', 'jpeg', 'png', 'gif');
if (file_exists($dir) == false) {
echo 'Directory \'', $dir, '\' not found';
} else {
$dir_contents = scandir($dir);
shuffle($dir_contents);
foreach ($dir_contents as $file) {
$file_type = strtolower(end(explode('.', $file)));
if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />';
}
}
}
答案 1 :(得分:3)
看看shuffle功能。 http://php.net/manual/en/function.shuffle.php由于PHP是无状态的,因此您每次都要重新扫描目录,或者将$ dir_contents分配给会话变量。然后你可以简单地改变会话变量。
if ($file !== '.' && $file !== '..' && in_array($file_type, suffle($file_display)) == true) {
试试。
答案 2 :(得分:1)
将php shuffle
用于由scandir
$dir = 'images';
$file_display = array ('jpg', 'jpeg', 'png', 'gif');
if (file_exists($dir) == false) {
echo 'Directory \'', $dir, '\' not found';
} else {
$dir_contents = scandir($dir);
if(shuffle($dir_contents)) {
foreach ($dir_contents as $file) {
$info = new SplFileInfo($file);
// scandir returns an array of files and,or directories
// so we should check if $file is a file
// and that it's extension matches the allowed ones
// which are ('jpg', 'jpeg', 'png', 'gif')
if(is_file($file) && in_array($info->getExtension(),$file_display)) {
echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />';
}
}
} else {
echo 'Error applying random order!';
}
}
答案 3 :(得分:0)
请按照以下说明操作:在您网站的根目录中创建一个文件夹“ php”,并将以下php文件放入“ rotate.php” ...
<?php
###############################################
# Simple Php Image Rotator - 1.1 - 24.10.2018 #
# Alessandro Marinuzzi - http://www.alecos.it #
###############################################
function rotate($folder) {
$list = scandir($folder);
$fileList = array();
$img = '';
foreach ($list as $file) {
if (is_file($folder . '/' . $file)) {
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
$fileList[] = $file;
}
}
}
if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$img = $folder . '/' . $fileList[$imageNumber];
}
return $img;
}
?>
用法非常简单,并且在PHP 7.2下非常有效...如果您在网站的根目录中有一个包含图片的“ pic”文件夹,请放入index.php(或其他位于php中的文件)中在根目录中):
<a href="/<?php include("php/rotate.php"); echo rotate("pic"); ?>">
这是使用highslide库的另一种用法:
<a href="/<?php include("php/rotate.php"); echo rotate("pic"); ?>" class="highslide" onclick="return hs.expand(this)"><img src="/<?php echo rotate("pic"); ?>" title="Click To Enlarge" alt="Random Gallery" width="90" height="67"></a>
希望这对您有帮助...