我有两个问题:
1)我使用下面的代码输出文件夹“ issues”中包含的子目录列表。每个子目录都是一个数字。我想按增加值对输出进行排序,因此有1、2、3、4、5、6、7、8、9、10、11,... 20、21等。
我该怎么做?
<?php
chdir('issues');
$d = dir(".");
echo "<ul>";
while (false !== ($entry = $d->read()))
{
if (is_dir($entry) && ($entry != '.') && ($entry != 'sponsors') &&
($entry != '..'))
echo "<li><a href='{$entry}'>{$entry}</a></li>";
}
echo "</ul>";
$d->close();
?>
2)在同一页面的不同部分,我还想输出指向最新发行版的链接,即编号最高的子目录。我该怎么办?
谢谢!
答案 0 :(得分:1)
使用scandir()和array_slice来获取目录内容的排序数组。
按照dossy建议使用asort进行准确的数字排序。
$directory = 'issues';
$contents = array_slice(scandir('issues'), 2);
$sub_dirs = array();
foreach($contents as $c){
$path = $directory."/".$c;
if(is_dir($path) && $c !== 'sponsors'){
$sub_dirs[] = $c;
}
}
asort($sub_dirs, SORT_NUMERIC);
$latest = end($sub_dirs);
reset($sub_dirs);
echo '<ul>';
foreach($sub_dirs as $sub){
echo '<li><a href="'.$directory.'/'.$sub.'">'.$sub.'</a></li>';
}
echo '</ul>';
echo '<a href="'.$directory.'/'.$latest.'">'.$latest.'</a>';