2

注文の列に基づいて大きな配列を並べ替えようとしています。配列が構築される方法では、クエリでソートすることはあまりできませんがarray_multisort()、PHP よりも高速な方法があるかどうか知りたいですか?

私のコードは次のとおりです。

foreach ($returnArr as $key => $row) {
    $tmp[$key] = $row['orders'];
}

array_multisort($tmp, SORT_DESC, $returnArr);

また、単一のクエリを作成し、where 条件の一部を単一の列にのみ適用する方法についての提案もお待ちしています。これが可能であれば、PHP ではなく MySQL で実行できます。

4

2 に答える 2

0

質問なしでは答えにくいですが、マルチソートが必要かどうかは疑問です。基本的に列名もソートしますが、これはクエリ自体で簡単に実行できます。データベースに値をソートさせることもできるので、クエリは次のようになります。

select
  Col_AAA, Col_BBB, Col_HHH, Col_ZZZ
from
  YourTable
order by
  Col_AAA, Col_BBB, Col_HHH, Col_ZZZ

これにより、並べ替えられた値と、指定した順序で列が返されます。

于 2012-10-08T20:09:05.480 に答える
0

が答えならarray_multisort()、質問は間違っています。array_multisort が必要なケースはまだ見たことがありません。PHP 配列は非常に強力なデータ構造であるため、マルチソートは実際には必要ありません。

$returnArr$tmp ですべての注文を取得し、この配列を並べ替えるのはなぜですか? 配列キーも保持する方法で $tmp を単純に並べ替える必要があります。この $tmp 配列を反復処理する場合、foreach 内のキーは同じで、$returnArr も指します。一致するデータにアクセスできます。ソートせずに $returnArr に設定します。$tmp と $returnArr の同じキーは、常に同じデータセットに属します。

一方で、やりたいことは何も言われませんでした。

于 2012-10-08T20:13:44.023 に答える