アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数の配列に同じ順番で並んでいるデータがあるとします
その中の一つの配列のソート結果と同様に、別のデータ配列をすべて並べ替えたいのですが
どのようにやれば簡単でしょうか。

// 種ソート実行
natcasesort($goods['tane']);
// 本ソートの際の基準配列作成
$standard=array_flip(array_keys($goods['tane']));
// リバース判定
if($html['sort']['order']===-1)$cmp=function($a,$b)use($standard){
if($standard[$a]>$standard[$b])return 1;
else return -1;
};
else $cmp=function($a,$b)use($standard){
if($standard[$a]>$standard[$b])return -1;
else return 1;
};
// ソート
foreach($goods as &$v){
uksort($v,$cmp);
$v=array_values($v);
}
unset($v);

これでは冗長でしょうか

A 回答 (1件)

いまいち何をやりたいのかわかりませんが、


$html['sort']['order']の値でユーザー関数を逆転させるなら
useでフラグを渡して、逆転させるだけでは?

ちなみに
$standard[$a]と$standard[$b]がかならず同じ値にならないと担保されていないなら
普通は
$standard[$a]===$standard[$b]でreturn 0しないと
想定したソートができません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!