1. ホーム
  2. php

[解決済み] PHP 多次元配列を、日付を含む要素でソートする

2022-02-19 20:41:05

質問

次のような配列があります。

Array
(
[0] => Array
    (
        [id] => 2
        [type] => comment
        [text] => hey
        [datetime] => 2010-05-15 11:29:45
    )

[1] => Array
    (
        [id] => 3
        [type] => status
        [text] => oi
        [datetime] => 2010-05-26 15:59:53
    )

[2] => Array
    (
        [id] => 4
        [type] => status
        [text] => yeww
        [datetime] => 2010-05-26 16:04:24
    )

)

誰か、datetime要素に基づいてこれをソート/並べ替える方法を提案してくれませんか?

どのように解決するのですか?

使用方法 usort() とカスタム比較関数を使用します。

function date_compare($a, $b)
{
    $t1 = strtotime($a['datetime']);
    $t2 = strtotime($b['datetime']);
    return $t1 - $t2;
}    
usort($array, 'date_compare');


EDIT : あなたのデータは、配列の配列で構成されています。これを区別するために、内側の配列(データ)をレコードと呼ぶことにしましょう。

usort はこれらのレコードのうちの2つを与えられた比較関数に渡します。 date_compare() を一度に表示します。 date_compare を抽出し "datetime" フィールドをUNIXタイムスタンプ(整数)として取得し、その差分を返すので、結果は 0 が等しい場合は正の数、最初の日付が等しい場合は正の数 ( $a )の方が大きい場合は負の値、第2引数( $b )の方が大きい。 usort() は、この情報を使って配列を並べ替えます。