こんにちは、日付別、カテゴリ別、特定の順序での重量別など、さまざまなキーで多次元配列をソートする際に問題に直面しています。
mysql の出力配列 (データ) に厳しいビジネス ロジックを実装する必要があるため、これらの配列を mysql の機能ごとに注文することはできません。
ビジネスロジックを実装した後、ソートする必要がある次のタイプの配列を見つけました
日付の昇順、カテゴリの降順、体重の昇順。
配列のサイズは 10000 以上です。
私はすでに usort 関数を使用していますが、並べ替え要素の値が同じ場合の固定順序の問題を解決できません。
助けてください。
Array
(
[0] => Array
(
[categorie] => xyz
[date] => 2012-12-08 19:30
[weight] => 3
[row_id] => 125812
[searchtype] => show
[uitgespeeld] => 0
)
[1] => Array
(
[categorie] => show
[date] => 2012-12-10 20:15
[weight] => 3
[row_id] => 125816
[searchtype] => show
[uitgespeeld] => 0
)
[2] => Array
(
[categorie] => abc
[date] => 2012-12-13 20:30
[weight] => 3
[row_id] => 119151
[searchtype] => show
[uitgespeeld] => 0
)
.......
)
ソートに使用したコード。
usort($temp_group_data, array('className','cmp_weight'));
usort($temp_group_data, array('className','cmp_date'));
function cmp_weight($a, $b) {
if (($a['weight']==$b['weight']) ) {
return 0;
} else if ($a['weight'] >$b['weight']) {
return -1;
} else {
return 1;
}
}
function cmp_date($a, $b) {
if (($a['date']==$b['date']) ) {
return 0;
} else if (strtotime($a['date']) >strtotime($b['date'])) {
return -1;
} else {
return 1;
}
}