次のように並べ替えたい 2 種類の配列のフィールドがあります。
1つ目は登録日、2 つ目は事前登録日です。
これが print_r 配列の出力です (変数$unsorted_usersに格納されています):
Array
(
[0] => stdClass Object
(
[id] => 120
[registration_date] => 2012-10-19 16:57:46
[username] => Jeff
)
[1] => stdClass Object
(
[id] => 121
[preregistration_date] => 2012-12-23 16:57:46
)
[2] => stdClass Object
(
[id] => 122
[registration_date] => 2012-11-30 16:57:46
[username] => Susan
)
)
この配列DESCをregistration_dateとpreregistration_dateで注文したいので、次のようになります。
配列 ([0] => stdClass オブジェクト ([id] => 121 [事前登録日] => 2012-12-23 16:57:46
)
[1] => stdClass Object
(
[id] => 122
[registration_date] => 2012-11-30 16:57:46
[username] => Susan
)
[2] => stdClass Object
(
[id] => 120
[registration_date] => 2012-10-19 16:57:46
[username] => Jeff
)
)
そして、私の usort 関数は次のとおりです。
$sorted_users = usort($unsorted_users, function($a, $b) {
return strcmp ($a->registration_date, $b->registration_date) ;
});
ただし、registration_date だけで並べ替えており、registration_date がない場合は次のようになります。
[1] => stdClass Object
(
[id] => 121
[preregistration_date] => 2012-12-23 16:57:46
)
エラーが発生します。
registration_date または preregistation_date ソートになるように関数を調整するにはどうすればよいですか?
ところで。registration_date と preregistration_date の形式は常に同じであり、両方を 1 つのオブジェクトにすることはできません。したがって、これは検証する必要はありません。
前もって感謝します。