duanfen2008 2012-10-08 15:43
浏览 36
已采纳

按日期排序PHP数组

I have a bunch of files that are in an array

im(month)(day)(year)

im01012007

im01022006

im01022012

im01032011

im01042010

im01042012

im01052009

im01052011

im01062012

im01072008

im01072011

etc..

is there a way to sort the array so that it sorted by year then month then day?

  • 写回答

5条回答 默认 最新

  • dpdhnd3577 2012-10-08 16:00
    关注

    You can try use usort

    $string = "im01012007.jpg,im01022006.jpg,im01022012.jpg,im01032011.jpg,im01042010.jpg,im01042012.jpg,im01052009.jpg,im01052011.jpg,im01062012.jpg,im01072008.jpg,im01072011.jpg";
    $array = explode(",", $string); // rebulding your array ;
    
    var_dump($array);
    
    usort($array, function ($a, $b) {
        $a = DateTime::createFromFormat("mdY", substr(pathinfo($a, PATHINFO_FILENAME), 2));
        $b = DateTime::createFromFormat("mdY", substr(pathinfo($b, PATHINFO_FILENAME), 2));
        return ($a == $b) ? 0 : (($a < $b) ? - 1 : 1);
    });
    
    var_dump($array);
    

    Output

    Before

    array
      0 => string 'im01012007.jpg' (length=14)
      1 => string 'im01022006.jpg' (length=14)
      2 => string 'im01022012.jpg' (length=14)
      3 => string 'im01032011.jpg' (length=14)
      4 => string 'im01042010.jpg' (length=14)
      5 => string 'im01042012.jpg' (length=14)
      6 => string 'im01052009.jpg' (length=14)
      7 => string 'im01052011.jpg' (length=14)
      8 => string 'im01062012.jpg' (length=14)
      9 => string 'im01072008.jpg' (length=14)
      10 => string 'im01072011.jpg' (length=14)
    

    After

    array
      0 => string 'im01022006.jpg' (length=14)
      1 => string 'im01012007.jpg' (length=14)
      2 => string 'im01072008.jpg' (length=14)
      3 => string 'im01052009.jpg' (length=14)
      4 => string 'im01042010.jpg' (length=14)
      5 => string 'im01032011.jpg' (length=14)
      6 => string 'im01052011.jpg' (length=14)
      7 => string 'im01072011.jpg' (length=14)
      8 => string 'im01022012.jpg' (length=14)
      9 => string 'im01042012.jpg' (length=14)
      10 => string 'im01062012.jpg' (length=14)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟