排序一个多维数组与日期在PHP中


Sorting a multi-dimensional array with date in PHP

我有一个多维数组,它包含一个日期值(第二个字段)。我试图用以下逻辑对整个数组进行降序排序:

$cars = array
  (
    array("Volvo","09/09/2016 10:39:50 am",18),
    array("BMW","09/09/2016 10:38:46 am",13),
    array("Saab","09/09/2017 10:38:49 am",200),
    array("Saab","09/09/2016 10:38:49 am",2),
    );

    echo $cars[0][0]."   ".$cars[0][1]."    ".$cars[0][2];
    echo "<br>";
    echo $cars[1][0]."   ".$cars[1][1]."    ".$cars[1][2];
    echo "<br>";
    echo $cars[2][0]."   ".$cars[2][1]."    ".$cars[2][2];
    echo "<br>";
    echo $cars[3][0]."   ".$cars[3][1]."    ".$cars[3][2];
    echo "<br>";  

  usort($cars, "cmp");
  function cmp($a, $b){ 
      return strcmp($b[1], $a[1]); 
  }
  echo "<br>";
    echo $cars[0][0]."   ".$cars[0][1]."    ".$cars[0][2];
    echo "<br>";
    echo $cars[1][0]."   ".$cars[1][1]."    ".$cars[1][2];
    echo "<br>";
    echo $cars[2][0]."   ".$cars[2][1]."    ".$cars[2][2];
    echo "<br>";
    echo $cars[3][0]."   ".$cars[3][1]."    ".$cars[3][2];
     echo "<br>";

然而,上面的代码给了我下面的输出:

之前 :----------

Volvo 09/09/2016 10:39:50 am 18

宝马09/09/2016 10:38:46 am 13

Saab 09/09/2010 10:38:49 am 200

Saab 09/08/2016 10:38:49 am 2

后 :----------

Volvo 09/09/2016 10:39:50 am 18

宝马09/09/2016 10:38:46 am 13

Saab 09/09/2010 10:38:49 am 200

Saab 09/08/2016 10:38:49 am 2

我期望的输出是:

Volvo 09/09/2016 10:39:50 am 18

宝马09/09/2016 10:38:46 am 13

Saab 09/08/2016 10:38:49 am 2

Saab 09/09/2010 10:38:49 am 200

任何帮助都会非常有用

使用usort()strtotime()比较日期

usort($cars, function($a, $b){
    return strtotime($a[1]) < strtotime($b[1]);
});

php7

usort($cars, function($a, $b) {
    return strtotime($a[1]) <=> strtotime($b[1]);
});