例えば次のような表があったとします。
-------------------
|名前|国語|数学|英語|
-------------------
| B | 75 | 82 | 69 |
-------------------
| C | 87 | 80 | 71 |
-------------------
| A | 85 | 73 | 92 |
-------------------
これを例えば国語の点数の高い順で並べ替えるとこうなりますよね。
-------------------
|名前|国語|数学|理科|
-------------------
| C | 87 | 80 | 71 |
-------------------
| A | 85 | 73 | 92 |
-------------------
| B | 75 | 82 | 69 |
-------------------
さてここで質問なのですが、上のような数字や名前のアルファベット順でのソーティングを実現するプログラムは、どのように作成すればよいのでしょうか。
済みませんがどなたかお教え下さい。勿論教えるときに例として上の表を用いてもかまいません。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#2です。
これからつくるなら、#1、#4の方が言ってるように
MySQLなどのデータベースを使ったほうがいいですね。
パフォーマンスの面からも。
おやりになりたいことは実現可能ですが、
もうちょっと具体化して、実際につくって見てくださいな。
とりあえず、MySQL + PHP の参考ページ挙げときます。
参考URL:http://www.t.daito.ac.jp/~t038218/webdb/webdb_1. …
No.4
- 回答日時:
結論から言うと、
表示部分だけPHPで作成して
ソーティングは全部MySQLに任せるのが
一番効率的だと思いますし、
何より早く実用化できます。
…が、やり取りを見ている限り
はっきり言ってかなり調査不足な感じですね…
SQLを使うのでしたらまずSQLの基本…
せめてSelect文位は見ておいたほうが良かったと思います。
それに加えてPHPでMySQLを使う基本ともいえる
「mysql_query」を知っていれば質問する必要もないかと思います。
一応、例を上げておきます。
例:
(仮にNobNOVAさんの示されているテーブルを「TEST」とします)
$Kyoka = 1; # 教科(1:名前,2:国語,3:数学,4:理科)
$Query = "select * from TEST ";
switch($1){
case 1: # 名前
$Query .= "where 名前 asc;";
break;
case 2: # 国語
$Query .= "where 国語 asc;";
break;
case 3: # 数学
$Query .= "where 数学 asc;";
break;
case 4: # 理科
$Query .= "where 理科 asc;";
break;
default: # 他
$Query .= ";";
}
$Res = mysql_query($Query) or die ("SQLエラー");
後は$Resを使って一覧表示させれば、
お好みの項目でソーティング済のデータが得られます。
参考URL:http://www.php.net/manual/ja/ref.mysql.php
No.3
- 回答日時:
えーと、#2です。
>しかし、例えば上の例で対象人数が100人や200人もいる場合は、
>配列を1個1個書いていくのは非常に面倒だし間違いやすいと思います。
#2の回答の頭で言ったんですけど、その100人、200人の元データは
どういったかたちであるんですか。
PHPで読み込めるものであれば、読み込む処理を付け加えれば
よいだけのことです。
この回答への補足
遅くなりまして申し訳ありません。
実はそのデータベースそのものはまだ作ってなくて、これから作る予定なのですが、今作ろうと思っているものは、それらのデータがテーブルで並べられていて、リンクをクリックすると、それらがソーティングされてまた別のソーティング方法で表される、というものです。
個人的にはデータベースをもとから作っておいて、追加データがある場合は別段苦労もなくデータをそのデータベースに追加できるという形にしたいのですが、出来ますでしょうか。
No.2
- 回答日時:
元のデータはどういったかたちであるんでしょうか。
とりあえず、配列ソートする例。
$ary = array(array("B","C","A"),array(75,87,85),array(82,80,73),array(69,71,92));
array_multisort($ary[1],SORT_DESC,SORT_NUMERIC,
$ary[0],SORT_ASC,SORT_STRING,
$ary[2],SORT_ASC,SORT_NUMERIC,
$ary[3],SORT_ASC,SORT_NUMERIC);
for($i=0;$i<4;$i++){
for($j=0;$j<4;$j++){
print $ary[$j][$i]." ";
}
print "<br>";
}
参考URL:http://php.s3.to/man/function.array-multisort.html
御回答、どうもありがとうございます。
一応私も配列を用いたソーティングを考えてはみたんですが、この場合は、上の例のようなソーティングの対象の個数が少ない場合は有効ですね。
しかし、例えば上の例で対象人数が100人や200人もいる場合は、配列を1個1個書いていくのは非常に面倒だし間違いやすいと思います。この場合はどうすれば良いでしょうか。やはりMySQLに頼るしか無いのでしょうか。
No.1
- 回答日時:
データベースを使わずに、と言うことでしょうか?
データベース(MySQLなど)を使うのであれば
$sql = "select 名前,国語,数学,理科 from TestTbl order by 国語 desc"
という文を発行し、結果をテーブルとして表示させればよいです。
データベースを使わない場合は、PHPで配列変数を利用してソートすることになるでしょう。ただし、この場合はデータの変更がある度にソースを書き直さなければなりませんから、保守が大変です。
この回答への補足
早速どうもありがとうございます。
個人的にはデータベースのファイルはあるけど、MySQLを用いずに純粋にPHPだけでデータベースのファイルからデータを取ってきてソーティングを行う方法が私は欲しいのです。何故かというと、私のHPのサーバーがMySQLに対応していないからというのと、私自身がMySQLに不勉強なためです(汗)
勿論、MySQLを用いて簡単にプログラミングが出来るのであれば、それに越したことはありませんが。
というわけで、よろしくお願いします。
あ、もう既に文中で回答を述べてますね。
すいません、ありがとうございます。
出来ればMySQLを用いたプログラミング方法を教えてくれる所があれば是非知りたいのですが。しかも初心者を対象としたところならなお理想的です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構造体を動的に確保&解放
-
C言語の配列をPush(追加)する...
-
mb_encode_numericentityでタグ...
-
行列
-
MYSQLとPHPによって取得する多...
-
PHPによる文字列の全パターン分割
-
CArrayのソート
-
2次元配列CSVのソート
-
verilogで、配列の一部をタスク...
-
Smartyで多次元配列をスマート...
-
pg_copy_fromの使い方について...
-
fgetc関数について
-
Pascalの手続きについて
-
PHPで配列から特定の文字列を削...
-
PHPでCSVを出力するさいに、ル...
-
MySQL から PHP にデータを読み...
-
配列 一部除外してソート?
-
reallocの使い方について
-
配列の並びについて
-
配列の要素(value)に、変数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
読み(あ行~わ行)ごとに分け...
-
pg_copy_fromの使い方について...
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
行列
-
C言語 最大値と最小値を求めて...
-
cakephpでのトランザクション処...
-
ファイルの書き込みについて教...
-
Smarty 三次元配列を使いたい
-
verilogで、配列の一部をタスク...
-
fgetc関数について
-
Smartyで多次元配列をスマート...
-
配列の添え字が小数だとどうなる?
-
変数の一致条件がたくさんある...
-
CArrayのソート
-
array_intersectで空欄を比較し...
-
2次元配列への標準入力
-
2次元配列CSVのソート
おすすめ情報