我有一个多维数组,它包含一个日期值(第二个字段)。我试图用以下逻辑对整个数组进行降序排序:
$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]);
});