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