I love iPhone, Android, Cocos2d-x
PHP で多次元配列のソートを SQL の ORDER BY のように複数項目でソートする
PHP で多次元配列の項目を複数使用して SQL の ORDER BY のようにソートする方法です。
$answer = array( "category1" => array( "ans1" => 1, "ans2" => 1, "ans3" => 1 ), "category2" => array( "ans1" => 1, "ans2" => 2, "ans3" => 0 ), "category3" => array( "ans1" => 0, "ans2" => 2, "ans3" => 1, ), );
というような配列を下記条件でソートします。
- ans1 の多い順
- ans1 が同じ場合は ans2 の多い順
- ans2 が同じ場合は ans3 の多い順
PHP の uasort 関数を使用します。
この関数はユーザーが比較関数を定義でき、その関数を使用して連想インデックスを保持したまま配列をソートします。
uasort($answer, "compare"); function compare($a, $b) { foreach ($a as $k=>$v) { if ($a[$k] > $b[$k]) { return -1; } else if ($a[$k] < $b[$k]) { return 1; } } }
上記の関数を使用してソートした結果 $answer は下記のようになりました。
$answer = array( "category2" => array( "ans1" => 1, "ans2" => 2, "ans3" => 0 ), "category1" => array( "ans1" => 1, "ans2" => 1, "ans3" => 1 ), "category3" => array( "ans1" => 0, "ans2" => 2, "ans3" => 1, ), );
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
3totally…
…