繁体   English   中英

目录列表需要自然顺序

[英]Natural Order needed for directory list

我是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 ,但无法弄清楚。

任何帮助将不胜感激。

您可以在SORT_NATURAL标志的情况下使用sort()函数;

像这样:

$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()函数的更多信息

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

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

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

<?php

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM