従業員が計算したデータのPHP配列(DBから取得)があります。従業員1人あたり約10列あり、そのうち8列は数値です(他の2列はIDと名前です)。ここに短いサンプルがあります:
デビッド:1024、75、22 マイク:500、100、25 ジェフ:700、82、10
任意の(数値)フィールドで配列を簡単に並べ替えて、誰が上/下にいるかを表示できますが、ファイナルテーブルビューに表示したいのは値によるランク付けなので、ユーザーはそうする必要はありません。テーブルを並べ替えて再並べ替えて、必要なものを取得します。これは、最初の列でソートされたテーブルの例であり、括弧内にランキングを示しています。
デビッド:1024(#1)、75(#3)、22(#2) ジェフ:700(#2)、82(#2)、10(#3) マイク:500(#3)、100(#1)、25(#1)
これで、最も簡単なアプローチは、テーブルを列で並べ替え、行インデックスをランキングとして使用し、列ごとに繰り返すことです。もっと効率的な方法を見つけられるかどうか疑問に思いました。
順序付けられたキュー(ランク付けが必要な列ごとに1つ)を使用し、配列を1回スキャンして、値をキューにプッシュすることを考えました。だが:
- PHPには、配列以外のデータ構造はありません(外部追加を使用しない限り)
- 私はこれがより効率的であるとは確信していません。
誰かが最善のアプローチを提案したり、アレイを数回再ソートする必要があることを確認したりできますか?
御時間ありがとうございます!