日付による多次元配列の並べ替え
多次元配列内のデータの並べ替えは、特にタイムスタンプ付きフィールドで情報を整理する場合によく行われるタスクです。この質問では、各レコードに "Y-m-d H:i:s" 形式の "日時" フィールドが含まれるレコードの配列を並べ替える方法を説明します。
解決策
提供されたソリューションは usort() 関数を使用しており、比較関数を 2 番目の引数として受け取ります。この場合、比較関数 date_compare() が定義されています。
function date_compare($a, $b) { $t1 = strtotime($a['datetime']); $t2 = strtotime($b['datetime']); return $t1 - $t2; }
この関数は、「datetime」フィールドから UNIX タイムスタンプを抽出し、それらの差を返します。負の値は最初の引数が時間的に早いことを示し、正の値は 2 番目の引数が早いことを示します。
この比較関数を usort() に渡すことにより、配列は " datetime" フィールド:
usort($array, 'date_compare');
アプローチの洗練
を使用する場合配列の配列については、用語を明確にすることが重要です。個々のサブ配列は「レコード」と呼ばれ、コレクション全体が「レコードの配列」となります。
Usort の役割
usort() は、貴重な仕分けメカニズム。一度に 2 つのレコードを取得し、それらのレコードを使用して比較関数を呼び出します。比較関数の戻り値によって、usort() が要素をどのように並べ替えるかが決まります。値が負の場合、最初のレコードは 2 番目のレコードの前に配置されます。正の場合、2 番目のレコードが最初のレコードよりも前になります。
解決策の適用
この特定のケースでは、比較関数 date_compare() がレコードの時間的順序を決定します。 。最初のレコードのタイムスタンプが早い場合は負の値が返され、その結果、2 番目のレコードの前に配置されます。同様に、正の戻り値は 2 番目のレコードが古いことを示し、値 0 はタイムスタンプが同じであることを示します。 usort() はこれらの比較を使用して、レコードが時系列に並べられるように配列を再配置します。
以上がPHP で多次元配列を日付でソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。