【问题标题】:Getting wrong result after sorting datetime array in PHP在 PHP 中对日期时间数组进行排序后得到错误的结果
【发布时间】:2017-01-18 06:25:05
【问题描述】:

我想按日期时间降序对数组进行排序。这是示例数组:

<?php
$var1 = "2016-12-30 12:30:59";
$var2 = "2015-11-21 11:30:59";
$var3 = "2017-01-15 10:30:59";

$a = array($var1, $var2, $var3);

function compare_func($a, $b) {
    // CONVERT $a AND $b to DATE AND TIME using strtotime() function
    $t1 = strtotime($a[0]);
    $t2 = strtotime($a[1]);

    return ($t2 - $t1);
}

usort($a, "compare_func");

var_export($a);
?>

我得到的输出是:

array (
  0 => '2017-01-15 10:30:59',
  1 => '2015-11-21 11:30:59',
  2 => '2016-12-30 12:30:59',
)

【问题讨论】:

    标签: php arrays sorting datetime


    【解决方案1】:

    可以直接比较字符串。

    function compare_func($a, $b) {
        return ($a > $b);
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      <?php
      $var1 = "2016-12-30 12:30:59";
      $var2 = "2015-11-21 11:30:59";
      $var3 = "2017-01-15 10:30:59";
      
      $arr = array($var1, $var2, $var3);
      
      function date_sort($a, $b) {
          return strtotime($b) - strtotime($a);
      }
      usort($arr, "date_sort");
      print_r($arr)
      
      
      ?>
      

      输出 降序

      Array
      (
          [0] => 2017-01-15 10:30:59
          [1] => 2016-12-30 12:30:59
          [2] => 2015-11-21 11:30:59
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多