2016-09-09 6 views
1

私は日付値(第2フィールド)からなる多次元配列を持っています。 は、私は以下のロジックを使用して日付の降順で全体の配列をソートしようとしています: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>"; 

しかし上記の私に与えている以下の出力:前

:-------- -

ボルボ2016年9月9日午前10時39分50秒午前18

BMW 2016年9月9日10時38分46秒午前13

サーブ2010年9月9日午前10時38分: 49 am 200

サーブ2016年9月8日10時38分49秒午前2

後:----------

ボルボ2016年9月9日午前十時39分50秒午前18

BMW 2016年9月9日午前10時38分46秒午前13

サーブ2010年9月9日10時38分49秒午前200

サーブ2016年9月8日10時38分49秒午前2

私は期待していた出力は次のようになります。

ボルボ2016年9月9日10時39分50秒午前18

BMW 2016年9月9日10時38分46秒午前13

サーブ09/08/2016年10時38分49秒午前2

サーブ2010年9月9日10時38分49秒午前200

すべてのヘルプは

答えて

1

使用usort()strtotime()に非常に有用であろう比較日付PHP 7では

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

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