2012-03-26 8 views
7

私はこのようになりますPHPの配列があります。PHPソート2D配列

Array{ 
    [0] { 
     'id'  => '0', 
     'title' => 'foo', 
     'address' => '123 Somewhere', 
    } 
    [1] { 
     'id'  => '1', 
     'title' => 'bar', 
     'address' => '123 Nowhere', 
    } 
    [2] { 
     'id'  => '2', 
     'title' => 'barfoo', 
     'address' => '123 Elsewhere', 
    } 
    [3] { 
     'id'  => '3', 
     'title' => 'foobar', 
     'address' => '123 Whereabouts', 
    } 
} 

をし、私はこのように見えるように、ネストされた配列で「タイトル」キーでそれをソートします:私は、ネストされたキーの「ID」を経由して各ネストされた配列を追跡していますので、

Array{ 
    [1] { 
     'id'  => '1', 
     'title' => 'bar', 
     'address' => '123 Nowhere', 
    } 
    [2] { 
     'id'  => '2', 
     'title' => 'barfoo', 
     'address' => '123 Elsewhere', 
    } 
    [0] { 
     'id'  => '0', 
     'title' => 'foo', 
     'address' => '123 Somewhere', 
    } 
    [3] { 
     'id'  => '3', 
     'title' => 'foobar', 
     'address' => '123 Whereabouts', 
    } 
} 

最初のレベルのキー値は重要ではありません。

私はksort()を使っていますが、成功しません。

+1

可能重複http://stackoverflow.com/questions/2699086/php-sort-:ここ は、プレPHP 5.3版です多次元アレイによる) –

答えて

30

あなたは(私はPHPを想定してい5.3+こちら))(usort使用する必要があります。

usort($your_array, function ($elem1, $elem2) { 
    return strcmp($elem1['title'], $elem2['title']); 
}); 

編集:あなたが実際にuasort()を使用する必要があるので、インデックスの関連付けを維持したかった 私は気づいていませんでした代わりに、同じパラメータを使用します。

EDIT2:

function compareElems($elem1, $elem2) { 
    return strcmp($elem1['title'], $elem2['title']); 
} 

uasort($your_array, "compareElems"); 
[値によってPHPソート多次元配列(の
+1

完璧な、それはまさに私が必要としていたものです。 SOにはいくつかの代替ソリューションがありますが、これはほとんどの(またはすべて)よりもエレガントに見えます。 – melat0nin

+0

ちょうどPHP <5.3のサーバーに転送されているので、埋め込み関数は動作しません。どのように私はuasort外の関数()で同じ効果を達成するためにこれをリファクタリングしますか? – melat0nin