2012-05-07 14 views
41

可能性の重複:PHPのソート配列は、アルファベット順にサブアレイ値を使用して


How can I sort arrays and data in PHP?
How do I sort a multidimensional array in php
PHP Sort Array By SubArray Value
PHP sort multidimensional array by value

私の配列がどのように見えます210

Array(
    [0] => Array(
     [name] => Bill 
     [age] => 15 
    ), 
    [1] => Array(
     [name] => Nina 
     [age] => 21 
    ), 
    [2] => Array(
     [name] => Peter 
     [age] => 17 
    ) 
); 

名前に基づいてアルファベット順に並べ替えたいと思います。 PHP Sort Array By SubArray Valueを見ましたが、あまり助けになりませんでした。 これを行う方法はありますか?

+2

あなたが必要とする正確な答えが含まれています。比較関数で 'optionNumber''を' 'name''に置き換えてください。重複として閉じる投票。他の質問に何かがある場合は、それについて具体的に質問してください。 –

+0

私は2つの値の同じキーを持つ配列を見たことがありません。おそらくそれがソートがうまくいかない理由でしょうか? – hakre

答えて

95

は、あなたの答えであり、それは100%動作しますが、私はそれをテストしてみました。

<?php 
$a = Array(
    1 => Array(
     'name' => 'Peter', 
     'age' => 17 
    ), 
    0 => Array(
     'name' => 'Nina', 
     'age' => 21 
    ), 
    2 => Array(
     'name' => 'Bill', 
     'age' => 15 
    ), 
); 
function compareByName($a, $b) { 
    return strcmp($a["name"], $b["name"]); 
} 
usort($a, 'compareByName'); 
/* The next line is used for debugging, comment or delete it after testing */ 
print_r($a); 
+12

すべて1行にあります:usort($ array、function($ a、$ b){return strcmp($ a ["name"]、$ b ["name"]);}); – pmrotule

+4

@pmrotule:バージョンの場合のみ> PHP 5.3 – Mohit

+7

strcmpは大文字と小文字を区別しています。アルファベット順の並べ替えで期待された結果が得られなかったのはなぜか分かりません。上記のコードを以下のように変更しました。return strcmp(strtolower($ a ["name"])、strtolower($ b ["name"])); – Andrew

9

usortはあなたの友達です:ここでは

function cmp($a, $b) 
{ 
     return strcmp($a["name"], $b["name"]); 
} 

usort($array, "cmp"); 
+0

ありがとうございました –