どのように並べ替え日配列PHP
-
11-09-2019 - |
質問
していま配列にはこのフォーマット:
Array
(
[0] => Array
(
[28th February, 2009] => 'bla'
)
[1] => Array
(
[19th March, 2009] => 'bla'
)
[2] => Array
(
[5th April, 2009] => 'bla'
)
[3] => Array
(
[19th April, 2009] => 'bla'
)
[4] => Array
(
[2nd May, 2009] => 'bla'
)
)
いを整理し、昇順での日、月、日、年.何が最善の方法。
もともとのメールがフェッチをMySQLの日付フォーマットで可能な私にとっての配列を取得するためにこの状態:
Array
[
['2008-02-28']='some text',
['2008-03-06']='some text'
]
その場合、このフォーマットで、ループを通じて、すべて削除し、 '-'
(ハイフン)マークのようにしてintegars、ソートを利用して array_sort()
ループのような並べ替えですか。望があった場合は別の言い方をしていけるかを話し合いまして3ループはこのたユーザーです。
感謝。
編集:私もこの:
$array[$index]=array('human'=>'28 Feb, 2009',
'db'=>'20080228',
'description'=>'Some text here');
ただし、このうませんので、あらかじめご方を並べ替えるには、配列に基づく'db'要素ですか?
編集2:更新初期var_dump
解決
利用にISO(yyyy-mm-dd
)フォーマットではなく、"英語"の形式をいただけます。 ksort
機能において、順を追ってご説明します。
必要はありませんのハイフン, ksort
すな英数字の比較の文字列のキーに yyyy-mm-dd
形式コンビニエンスストアでのお支の語彙の順と同じであり、実際の日にちます。
編集 いま現在の修正お問いることだった配列の配列のソートキーのサブ配列.この場合にはを使用してみてください uksort
としておすすめでお勧めしますご自身の編集や並び替えに基づきDB形式の日付より構文解析することによって、人間の読みやすいフォーマット:
function cmp($a, $b)
{
global $array;
return strcmp($array[$a]['db'], $array[$b]['db']);
}
uksort($array, 'cmp');
他のヒント
実際には、これを使用します:
usort($array, "cmp");
function cmp($a, $b){
return strcmp($b['db'], $a['db']);
}
:)
function cmp($a, $b) {
global $array;
return strcmp($array[$a]['db'], $array[$b]['db']);
}
uksort($array, 'cmp');
私は時々あなたがすべてでグローバル変数を使用can`tとにかくグローバル変数を使用すると、どちらか良い方法はないので、代わりにusort()
のuksort()
機能を使用することをお勧めがあると思います。
また、匿名関数を使用することができます。
// Sort in chronological order.
usort($array, function($a, $b) {
return strcmp($a['db'], $b['db']);
});