1

我有以下代码在文件夹 /images/ 中搜索图像并回显它们。但是,每次我刷新页面时,它都会以随机顺序显示图像。图像被命名为 1、2、3、4 等等。有什么办法可以让最后一个数字(例如:4)是第一个显示的数字,依此类推?

<?php
    $dirname = "images";
    $images = scandir($dirname);
    shuffle($images);
    $ignore = Array(".", "..");
    foreach($images as $curimg){
        if(!in_array($curimg, $ignore)) {
            echo "<img src=\"". $dirname . '/' . $curimg ."\">" ;
        }
    }               
?>

提前致谢。

4

4 回答 4

3

这是由于你的洗牌。你正在随机化你的数组。让我向您介绍: http: //php.net/manual/en/function.array-reverse.php 这是

<?php
    $dirname = "images";
    $images = scandir($dirname);
    $images = arsort(array_reverse($images, true));
    $ignore = Array(".", "..");
    foreach($images as $curimg){
        if(!in_array($curimg, $ignore)) {
            echo "<img src=\"". $dirname . '/' . $curimg ."\">" ;
        }
    }               
?>

更新

$dirname = "Images";
$images = scandir($dirname);
sort($images,SORT_NUMERIC);
krsort($images);
$ignore = Array(".", "..");
foreach($images as $curimg){
    if(!in_array($curimg, $ignore)) {
        echo "<img src=\"". $dirname . '/' . $curimg ."\"> \n" ;
    }
}

我一直在使用的东西:

没有sort();andkrsort();我返回:

<img src="Images/1.png"> 
<img src="Images/10.png"> 
<img src="Images/11.png"> 
<img src="Images/2.png"> 
<img src="Images/3.png"> 
<img src="Images/4.png"> 
<img src="Images/5.png"> 
<img src="Images/6.png"> 
<img src="Images/7.png"> 
<img src="Images/8.png"> 
<img src="Images/9.png"> 

使用 krsort 和 sort.. 我返回:

<img src="Images/11.png"> 
<img src="Images/10.png"> 
<img src="Images/9.png"> 
<img src="Images/8.png"> 
<img src="Images/7.png"> 
<img src="Images/6.png"> 
<img src="Images/5.png"> 
<img src="Images/4.png"> 
<img src="Images/3.png"> 
<img src="Images/2.png"> 
<img src="Images/1.png"> 

我想这就是你要找的。

于 2013-04-05T21:58:53.563 回答
1

http://www.php.net/manual/en/function.array-reverse.php

应该是正确的功能而不是随机播放

更新:

更好的是直接通过scandir对其进行排序:

$images = scandir($dirname, SCANDIR_SORT_DESCENDING);
于 2013-04-05T21:58:23.000 回答
0

您可以尝试将图像名称加载到数组中,而不是排序数组然后回显图像标签

于 2013-04-05T21:59:21.697 回答
0
<?php

$dirname = "images";
$files = scandir($dirname, 1); // using SCANDIR_SORT_DESCENDING PHP 5.4+ ONLY!
foreach ($files as $file) {
 if ($file !== '.' && $file !== '..') {
     echo "<img src=\"". $dirname . '/' . $file ."\">" ;
}
}
?>
于 2013-04-05T22:16:32.920 回答