質問

していま配列にはこのフォーマット:

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']);
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top