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…
…