配列のソートの質問です。
初心者です。よろしくお願いいたします。
//---テキストファイルの1行目を読み込んで配列にいれました-----------
for($i = 1; $i < 51; $i++){
$fq = fopen("../4c/4c$i/+score.txt", 'r');
$fr = fgets ($fq);
$frr = rtrim($fr);
$line[$i-1] = "$frr <font color=blue>4c$i</font>";
fclose ($fq);
}
//-----その配列をソートしました---------------
rsort($line,SORT_NUMERIC);
foreach ($line as $tmp){
print "$tmp<br>";
}
//---すると
22,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1
22,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26
22,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28
22,問題番号→,1239,2010/06/22/Tue/11/52/33 4c23
22,問題番号→,1239,2010/06/22/Tue/11/42/15 4c20
//----以下省略-------------------------------
となりました。
各行の先頭が 22 で同じとき
2010/06/22/Tue/11/41/24
2010/06/22/Tue/11/40/54
2010/06/22/Tue/11/42/48
2010/06/22/Tue/11/52/33
2010/06/22/Tue/11/42/15
の早い順にソートするには
どうしたらよいでしょうか?
お教えください。
No.2ベストアンサー
- 回答日時:
なるほど先頭要素で降順に、4番目の要素で昇順にソートしたいのですね?
usortで処理してみてはどうでしょうか?
<?PHP
$line=Array(
"100,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1"
,"50,問題番号→,1238,2010/06/22/Tue/11/50/31 4c21"
,"20,問題番号→,1237,2010/06/22/Tue/11/44/15 4c10"
,"100,問題番号→,1239,2010/06/21/Tue/11/42/48 4c30"
,"100,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28"
,"50,問題番号→,1238,2010/06/22/Tue/11/52/33 4c23"
,"100,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26"
,"20,問題番号→,1237,2010/06/22/Tue/11/42/15 4c20"
);
usort($line,"cmp");
foreach ($line as $tmp){
print "$tmp<br>";
}
function cmp($a, $b){
$aa=explode(",",$a);
$bb=explode(",",$b);
if($aa[0] < $bb[0]) return 1;
if($aa[0] > $bb[0]) return -1;
if($aa[3] < $bb[3]) return -1;
if($aa[3] > $bb[3]) return 1;
return 0;
}
?>
参考URL:http://www.php.net/manual/ja/function.usort.php
No.1
- 回答日時:
早い順のソートとは?
またもともとrsortで「SORT_NUMERIC」でソートをしている意味はあるのですか?
単純に前方から比較してソートを昇順におこなうなら
sortでSORT_STRINGで行ってみてはどうでしょう?
<?
$line=Array(
"22,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1"
,"22,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26"
,"22,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28"
,"22,問題番号→,1239,2010/06/22/Tue/11/52/33 4c23"
,"22,問題番号→,1239,2010/06/22/Tue/11/42/15 4c20"
);
rsort($line,SORT_STRING);
foreach ($line as $tmp){
print "$tmp<br>";
}
?>
この回答への補足
ありがとうございました。
書き方が不十分で、すみません。
先頭の数字で
ユーザー 4c1,4c26,4c28,4c23,4c20
の順位をつけようとしています。
22,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1
22,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26
22,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28
21,問題番号→,1238,2010/06/22/Tue/11/52/33 4c23
20,問題番号→,1237,2010/06/22/Tue/11/42/15 4c20
となってしまうので、
22,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1
22,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26
22,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28
を
22,問題番号→,1239,2010/06/22/Tue/11/40/54 4c26
22,問題番号→,1239,2010/06/22/Tue/11/41/24 4c1
22,問題番号→,1239,2010/06/22/Tue/11/42/48 4c28
となるようにするには、
どうしたらよいでしょうか?
同じ 22 なら、解答した時間順にソートしたいのです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
DataGridViewの複数列を連動し...
-
VB.NETでファイル名順にファイ...
-
n番目に大きい数を求めるアル...
-
C言語でファイルの中身をソー...
-
数字文字列のソート方法
-
C# DataGridView のヘッダーセ...
-
DataGridViewのソートを止めたい
-
C# DataTableの行をソートしてD...
-
ファイル名「1.jpg ~10.jpg~...
-
用意されたファイルを読み込む...
-
C++ 入力した3つのint型の整数...
-
Excel VBAで並べ替えをしたい
-
VBScriptで重複レコードを削除...
-
配列の中身を入れ替える方法を...
-
VBA基本構文の作り方 2列の...
-
文字列をソートする方法
-
EXCEL VBAのソートについて
-
n個の要素で出来る順列組み合...
-
ポインタと構造体の利用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
あるディレクトリ内のファイル...
-
VBA基本構文の作り方 2列の...
-
ファイル名「1.jpg ~10.jpg~...
-
Excelですべての組合せ(重複組...
-
vbでDataTableの抽出コピー
-
C# DataTableの行をソートしてD...
-
listboxの並び替え
-
(VBA) Dir 関数で取得するファ...
-
コレクションの数値をSortで並...
-
C言語・要素除去
-
Fortran77で多次元配列を並び替...
-
C# DataTable ソートについて
-
excel VBA の条件をつけての列...
-
VBScriptで重複レコードを削除...
-
文字列をソートする方法
-
n番目に大きい数を求めるアル...
-
C言語でアナグラムを求めるプロ...
おすすめ情報