【问题标题】:PHP - Sorting directory alphabetically on drop down listPHP - 在下拉列表中按字母顺序对目录进行排序
【发布时间】:2012-12-11 20:52:36
【问题描述】:
如何对目录进行排序以按字母顺序显示下拉列表?
<select name=country>
<?php
$handle=opendir("images/flags");
while (false!==($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$country = substr($file,0,strpos($file,'.'));
echo "<option value=\"".$file."\"><center>".$country."</center></option>\n";
}
}
closedir($handle);
?>
</select>
【问题讨论】:
标签:
php
sorting
directory
【解决方案1】:
使用
array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )
默认情况下,排序顺序是按字母升序排列的。如果
可选的排序顺序设置为 SCANDIR_SORT_DESCENDING,然后
排序顺序是按字母降序排列的。如果设置为
SCANDIR_SORT_NONE 则结果未排序。
更多阅读scandir
另一种解决方案:
<?php
$dir = "images/flags";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
print_r($files);
rsort($files);
print_r($files);
?>
【解决方案2】:
你可以简单地使用:
$ao = new ArrayObject(iterator_to_array(new FilesystemIterator(__DIR__ ."/test", FilesystemIterator::SKIP_DOTS)));
$ao->natsort(); //sort directory
foreach ( $ao as $file ) {
echo $file->getPathname() . PHP_EOL;
}