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 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题