0

您好,我有这段代码可以在 php 中显示文件夹中的图像:

$handle = opendir(dirname(realpath(__FILE__)).'/galerija/accomodation/');
while($file = readdir($handle)) {
    if($file !== '.' && $file !== '..') {
        echo '<img src="galerija/accomodation/'.$file.'" rel="colorbox" />';
    }
}

一切正常,但我如何设置按名称或其他内容显示文件夹排序器,因为我真的需要对图像进行排序,而这个脚本显示的只是随机图像。谢谢。

4

3 回答 3

1

使用glob排序

$files = glob("*.jpg");
sort($files);
foreach ($files as $file) {
    ....
}
于 2012-10-09T08:00:07.633 回答
0

您应该首先将图像 ( $files) 存储到数组中,例如$aImages[] = $file。您可以使用 PHP 中的几个排序函数对数组进行排序。asort(), usort(), sort().... 见http://php.net/manual/en/ref.array.php

于 2012-10-09T08:00:07.590 回答
0

你应该在这里找到你的答案: Sorting files by creation/modification date in PHP

还有其他类似的帖子,您可以在其中获得另一个有用的排序功能。

这样您的代码应如下所示:

if($h = opendir(dirname(realpath(__FILE__)).'/galerija/accomodation/')) {
  $files = array();
  while(($file = readdir($h) !== FALSE){
    if($file !== '.' && $file !== '..'){
       $files[] = stat($file);
    }
  }

  // do the sort
  usort($files, 'sortByName');

  // do something with the files
  foreach($files as $file) {
            echo '<img src="galerija/accomodation/'.$file.'" rel="colorbox" />';
  }
}

//some functions you can use to sort the files
//sort by change time
//you can change filectime with filemtime and have a similar effect
function sortByChangeTime($file1, $file2){
    return (filectime($file1) < filectime($file2)); 
}

function sortByName{
    return (strcmp($file1,$file2)); 
}
于 2012-10-09T08:40:43.037 回答