オブジェクトの配列を日付で並べ替える
PHP では、オブジェクトの配列を特定のプロパティで並べ替える必要があることがよくあります。日付フィールドなど。これにより、データを時系列で表示または操作できるようになります。
日付によるオブジェクトの並べ替え
次のオブジェクトの配列を考えてみましょう。各オブジェクトは、レコードを表します。日付プロパティ:
$array = [
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
];
これらのオブジェクトを date プロパティによって昇順 (古い順) に並べ替えるには、strtotime() 関数と usort() 関数を利用できます。
カスタム比較Function
usort() を使用するには、日付プロパティに基づいて 2 つのオブジェクトを比較するカスタム比較関数を定義する必要があります。次のコードは、2 番目のオブジェクトの日付のタイムスタンプから最初のオブジェクトの日付のタイムスタンプ (strtotime() を使用して変換) を減算する関数を定義します。
function cb($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
usort() を使用した配列の並べ替え
比較関数を作成したら、配列に対して usort() を呼び出し、比較関数を2 番目の引数:
usort($array, 'cb');
Example
先ほどの配列の例を使用すると、結果はソートされた配列は次のようになります:
[
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
]
PHP 5.3 以降
PHP 5.3 以降では、より単純な匿名関数を比較関数として使用できます:
usort($array, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
このアプローチでは、前のアプローチと同じ並べ替え結果が得られます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3