0

ディレクトリをソートしてドロップダウン リストをアルファベット順に表示するにはどうすればよいですか?

<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>
4

2 に答える 2

4

使用する

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

デフォルトでは、ソート順はアルファベットの昇順です。オプションの sorting_order が 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);

?>
于 2012-12-26T08:59:34.807 に答える
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; 
}
于 2012-12-26T09:06:29.237 に答える