オブジェクトの配列を日付で並べ替える
PHP では、オブジェクトの配列を特定のプロパティで並べ替える必要があることがよくあります。日付フィールドなど。これにより、データを時系列で表示または操作できるようになります。
日付によるオブジェクトの並べ替え
次のオブジェクトの配列を考えてみましょう。ここで、各オブジェクトは、レコードを表します。 date プロパティ:
<code class="php">$array = [ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ];</code>
これらのオブジェクトを date プロパティで昇順 (古い順) に並べ替えるには、strtotime() 関数と usort() 関数を利用できます。
カスタム比較関数
usort() を使用するには、日付プロパティに基づいて 2 つのオブジェクトを比較するカスタム比較関数を定義する必要があります。次のコードは、2 番目のオブジェクトの日付のタイムスタンプから最初のオブジェクトの日付のタイムスタンプ (strtotime() を使用して変換) を減算する関数を定義します。
<code class="php">function cb($a, $b) { return strtotime($a['date']) - strtotime($b['date']); }</code>
usort() を使用した配列の並べ替え
比較関数を作成したら、配列に対して usort() を呼び出し、比較関数を 2 番目の引数として渡します。
<code class="php">usort($array, 'cb');</code>
例
先ほどの配列の例を使用すると、ソートされた配列は次のようになります。
<code class="php">[ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ]</code>
PHP 5.3 以降
PHP 5.3 の場合さらに、より単純な匿名関数を比較関数として使用できます。
<code class="php">usort($array, function($a, $b) { return strtotime($a['date']) - strtotime($b['date']); });</code>
このアプローチでは、前のアプローチと同じ並べ替え結果が得られます。
以上がPHPでオブジェクトの配列を日付で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。