目录列表需要自然顺序

时间:2019-03-13 22:09:29

标签: php glob

我是PHP新手,需要帮助才能使此工作正常。我正在尝试在PHP页面中列出目录文件夹。到目前为止,它仍然有效,但是文件夹列表以“标准”顺序显示。我需要按“自然”顺序使用它,但无法使其正常工作。

标准订单:

  • 1
  • 10
  • 11
  • 2
  • ...

自然顺序:

  • 1
  • 2
  • 10
  • 11
  • ...

这是我到目前为止所拥有的:

<?php

$TheFolder = '';

foreach(glob($TheFolder.'*', GLOB_ONLYDIR) as $dir) {
    $dir = str_replace($TheFolder, '', $dir);
    echo $dir , "<br>";
    //echo $dir;
}

?>

我以前一直尝试使用 natsort ,但无法弄清楚。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以在sort()标志启用的情况下使用SORT_NATURAL功能;

像这样:

$array = [1,10,11,12,4,30];
sort($array, SORT_NATURAL);
print_r($array); // Array ( [0] => 1 [1] => 4 [2] => 10 [3] => 11 [4] => 12 [5] => 30 )

所以这样的事情应该起作用:

$directoriesArray = glob($TheFolder.'*', GLOB_ONLYDIR);
sort($directoriesArray, SORT_NATURAL);
foreach($directoriesArray as $dir){
//.. str_replace and echo $dir
}

详细了解sort()函数here

答案 1 :(得分:0)

感谢Mostafa Mohsen向我指出了正确的方向。

以Mostafa的解决方案为基础,需要进行一些小的修改,因为它仍然会引发错误。

这是最终代码,可以正常工作:

<?php

$directoriesArray = glob('*', GLOB_ONLYDIR);
sort($directoriesArray, SORT_NATURAL);
foreach($directoriesArray as $dir){
    echo $dir , "<br>";
}
?>