首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从FTP服务器返回的PHP排序数组

从FTP服务器返回的PHP排序数组
EN

Stack Overflow用户
提问于 2019-06-10 01:58:37
回答 1查看 86关注 0票数 0

我从家里的NAS FTP服务器返回了这个数组:

代码语言:javascript
复制
$arr = array (
  0 => 'FOLDER./Vacation.Paris.2018.5Month-Kodak[town]',
  1 => './Vacation.Paris.2018.5Month-Kodak[town]/DESC.txt',
  2 => './Vacation.Paris.2018.5Month-Kodak[town]/NUMBERS_CONTACT.vbs',
  3 => './Vacation.Paris.2018.5Month-Kodak[town]/paris.vacation.2018.5month-kodak.mkv',
  4 => './Vacation.Paris.2018.5Month-Kodak[town]/paris.vacation.2018.5month-kodak.dbs',
  5 => 'FOLDER./Vacation.Dubai.2018-Kodak',
  6 => './Vacation.Dubai.2018-Kodak/DESC.txt',
  7 => './Vacation.Dubai.2018-Kodak/NUMBERS_CONTACT.vbs',
  8 => 'FOLDER./Vacation.Dubai.2018-Kodak/Family',
  9 => './Vacation.Dubai.2018-Kodak/Subs/2_IMG00536.jpg',
  10 => './Vacation.Dubai.2018-Kodak/Subs/3_IMG00537.jpg',
  11 => './Vacation.Paris.2018.5Month-Kodak[town]/Vacation.Dubai.2018.Center-Kodak.mp4',
  12 => './Vacation.2019.5Month.Sweden-Kodak.mp4',
);

正如你所看到的,我有很多我的假期文件夹,现在我正在写html/css/jquery相册,但我需要在php中获得第一个正确的顺序,上面需要输出:

代码语言:javascript
复制
[0] => FOLDER./Vacation.Paris.2018.5Month-Kodak[town]
[1] => ./Vacation.Paris.2018.5Month-Kodak[town]/DESC.txt
[2] => ./Vacation.Paris.2018.5Month-Kodak[town]/NUMBERS_CONTACT.vbs
[3] => ./Vacation.Paris.2018.5Month-Kodak[town]/paris.vacation.2018.5month-kodak.mkv
[4] => ./Vacation.Paris.2018.5Month-Kodak[town]/paris.vacation.2018.5month-kodak.dbs
[5] => ./Vacation.Paris.2018.5Month-Kodak[town]/Vacation.Dubai.2018.Center-Kodak.mp4
[6] => FOLDER./Vacation.Dubai.2018-Kodak
[7] => ./Vacation.Dubai.2018-Kodak/DESC.txt
[8] => ./Vacation.Dubai.2018-Kodak/NUMBERS_CONTACT.vbs
[9] => FOLDER./Vacation.Dubai.2018-Kodak/Family
[10] => ./Vacation.Dubai.2018-Kodak/Subs/2_IMG00536.jpg
[11] => ./Vacation.Dubai.2018-Kodak/Subs/3_IMG00537.jpg
[12] => ./Vacation.2019.5Month.Sweden-Kodak.mp4

这是来自该论坛的成员尝试的代码,但它不能正常工作:

https://3v4l.org/208ol

所以,如果你可以帮我修改上面的代码,以便我可以得到所需的输出。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 02:24:58

这使用usort来完成这项工作,并且需要一些处理来获得您之后的排序顺序。

第一部分是从字符串中提取年份-假设它类似于xxxxx 2020 xxxxx,这就是为什么它使用这里使用的正则表达式中的第二个元素。然后,它将只从字符串的前面删除文件夹,以确保它不会从其他地方删除。然后,为了获得正确的顺序,它使用年份,后跟处理后的字符串...

代码语言:javascript
复制
usort($arr, function($a, $b) {
    $f = "FOLDER";
    if ( substr( $a, 0, strlen($f)) == $f ) {
        $a = substr( $a, strlen($f));
    }
    $y1 = preg_split("/\D+/", $a)[1];
    if ( substr( $b, 0, strlen($f)) == $f ) {
        $b = substr( $b, strlen($f));
    }
    $y2 = preg_split("/\D+/", $b)[1];
    return $y1.$a <=> $y2.$b;
});
print_r($arr);

这使用宇宙飞船运算符进行比较,它仅为PHP 7+。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56517098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档