2017-11-30 4 views
0
に基づいて並べ替え多次元配列
Array 
(
    [0] => Array 
     (
      [start] => 15:00 
      [end] => 15:25 
     ) 

    [1] => Array 
     (
      [start] => 17:00 
      [end] => 17:20 
     ) 

    [2] => Array 
     (
      [start] => 11:15 
      [end] => 11:35 
     ) 

    [3] => Array 
     (
      [start] => 10:50 
      [end] => 11:20 
     ) 

    [4] => Array 
     (
      [start] => 14:20 
      [end] => 14:25 
     ) 
) 

私は[dateTimeに]を使用して終了時間キーで上記の配列をソートしたい、最終的な出力は次のようになります。PHP - dateTimeの

Array 
(
    [0] => Array 
     (
      [start] => 10:50 
      [end] => 11:20 
     ) 

    [1] => Array 
     (
      [start] => 11:15 
      [end] => 11:35 
     ) 

    [2] => Array 
     (
      [start] => 14:20 
      [end] => 14:25 
     ) 

    [3] => Array 
     (
      [start] => 15:00 
      [end] => 15:25 
     ) 

    [4] => Array 
     (
      [start] => 17:00 
      [end] => 17:20 
     ) 
) 

誰でもへの道を提案することができます

+0

さて、あなたはこれまでに試してみましたでしょうか?あなたのDateTime試行スクリプトは何ですか? – Peon

+0

タイムスロットはユーザーから生成されます。タイムスロットは、表示するときに正しい順序で表示する必要があります。 – batman231

答えて

1

usortを使用すると、['end']の両方の値に対してDateTimeを作成し、比較機能でそれらを比較することができます。例えば

$arrays = [ 
    [ 
     "start" => "15:00", 
     "end" => "15:25" 
    ], 
    [ 
     "start" => "17:00", 
     "end" => "17:20" 
    ], 
    [ 
     "start" => "11:15", 
     "end" => "11:35" 
    ], 
    [ 
     "start" => "10:50", 
     "end" => "11:20" 
    ], 
    [ 
     "start" => "14:20", 
     "end" => "14:25" 
    ], 
]; 

usort($arrays, function($a, $b) { 
    return new DateTime($a['end']) > new DateTime($b['end']); 
}); 

Demo