下記のようなtsvファイルがあります。データは1行目に順次書き加えられていきます。
----
りんご東京100円紅玉2011/10/1 2:00:00
りんご大阪100円紅玉2011/10/1 1:00:00
りんご東京200円紅玉2011/9/8 2:00:00
りんご東京200円ゴールデン2011/9/1 2:00:00
バナナ東京80円モンキー2011/8/1 3:00:00
バナナ大阪80円モンキー2011/8/1 2:00:00
バナナ東京100円モンキー2011/8/1 1:30:00
バナナ東京100円ゴールデン2011/8/1 1:00:00
----
これをタブ区切りで左から要素1、要素2,要素3,要素4,要素5として、
要素2→要素1→要素4→要素5の優先順で、それぞれ降順に並べ替えてファイル出力したいのですが、
過去ログ含め十日ほど色々調べたのですが、php初心者のため根を上げてしまいました。
----
りんご東京100円紅玉2011/10/1 2:00:00
りんご東京200円紅玉2011/9/8 2:00:00
りんご東京200円ゴールデン2011/9/1 2:00:00
バナナ東京80円モンキー2011/8/1 3:00:00
バナナ東京100円モンキー2011/8/1 1:30:00
バナナ東京100円ゴールデン2011/8/1 1:00:00
りんご大阪100円紅玉2011/10/1 1:00:00
バナナ大阪80円モンキー2011/8/1 2:00:00
----
というファイルを作成したいです。
どなたか教えてもらえませんでしょうか。
No.1ベストアンサー
- 回答日時:
まずは一行毎に読み込むか、全てを読みこんだ後で改行でexplodeして、それぞれの行が配列の要素となるような配列を作成します。
各配列の要素は、一行をタブ文字(\t)で、explodeした配列とします。
$tsv=array(array('リンゴ','東京','100円','紅玉','2011/10/1 2:00:00')
,array(.....),array(.....),......);
のようなデータです。(実際にはtsvファイルから読みこんで、上記と同等の配列を作成する)
それを二次元配列と呼ぶか、配列の配列と呼ぶかはお好きな方を。
あとは、array_multisort、usortのリファレンスを確認して、どちらかお好きな方を選択してください。
10日間色々やっている最初のほうに上記のことを試していたのですが、
うまくいきませんでした。
ご回答をいただいて「やったんだよね~それは。」
とおもいつつもう一度書いたらうまくいきました。
前と何が違うかわからないのですがとにかく解決しました。
ありがとうございました。
No.3
- 回答日時:
今回のデータなら多分こんな感じ
<?PHP
function mySort($a,$b){
if($a[1]<$b[1]) return 1;
if($a[1]>$b[1]) return -1;
if($a[0]<$b[0]) return -1;
if($a[0]>$b[0]) return 1;
if($a[3]<$b[3]) return 1;
if($a[3]>$b[3]) return -1;
if($a[4]<$b[4]) return -1;
if($a[4]>$b[4]) return 1;
return 0;
}
if (($handle = fopen("test.tsv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
$row++;
$datas[]=$data;
}
fclose($handle);
}
usort($datas,"mySort");
print_r($datas);
//ファイルの書き込みは省略
?>
日時の比較は日付として比較するのと文字列として比較するのでは
ずれがでるので十分注意してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電車・路線・地下鉄 えきねっとに詳しい方教えてください。 1 2022/10/10 12:42
- Visual Basic(VBA) vbaマクロについて 【シート2】をもとに【シート1】に有るものを「有り.csv」としてデスクトップ 3 2023/05/07 22:30
- 新幹線 なぜ関東の鉄道って遅いだけでなく、車両の快適性のかけらもないのでしょうか? 新幹線すら酷いよね 1 2022/03/31 17:46
- スーパー・コンビニ 何故100円ローソンは、あまり普及しないのですか? 大泉学園の長久保に100円ローソンがあり、 非常 2 2022/05/20 09:33
- メディア・マスコミ 産経新聞ってどんな新聞ですか? 8 2022/04/15 08:44
- 飲食店・レストラン はま寿司とスシロー詳しい人 2 2023/03/13 23:02
- 会社経営 家電メーカー(事業部別)売上ランキングTOP1位~10位 1 2023/05/10 20:23
- 債券・証券 仕訳のこの問題が分かりません。教えていただけるとありがたいです 1 2022/06/15 20:34
- 電車・路線・地下鉄 有料のエスカレーターを導入したら使いますか? 6 2023/07/23 00:52
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
foreachのなかで次のキーを参照...
-
PHP 多次元配列変数のデータ受...
-
CSVデータのn番目だけの値を取...
-
$_SESSIONに二次元配列を使える...
-
unset使用時の利点
-
配列の書き方
-
String だと「 ByRef引数の型が...
-
multiple属性のPOSTを配列で受...
-
smartyのforeachの使い方
-
スカラーのベクトル微分
-
forとかで連番の変数を一気に格...
-
3つの連想配列を交互に代入し...
-
While文を使って配列の中身を全...
-
多次元配列をソートする綺麗な...
-
CSVデータの行数カウントをした...
-
プルダウンメニューにDBの内容...
-
多次元配列の一次元目の最大値...
-
ログファイルが一定行数を超え...
-
添え字が全て文字列のPHPの多次...
-
ヒアドキュメントの中のfor文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
String だと「 ByRef引数の型が...
-
file_existsでファイル名の部分...
-
foreachのなかで次のキーを参照...
-
$_SESSIONに二次元配列を使える...
-
PHPのカッコ[ ]の使い方について
-
$_SESSIONについて教えて下さい。
-
配列を回すとき、最後の要素だ...
-
ネストが深い時のforeachはどう...
-
配列一致(要素順番は違うが内容...
-
PHPにてクラスを配列にすること...
-
配列の値の更新方法について
-
postgresql関数をつかったレコ...
-
PHPで配列をPOSTデータで送った...
-
PHP 多次元配列変数のデータ受...
-
漢字のソートについて
-
チェックボックスが複数選択で...
-
$_POSTを一括してサニタイズし...
-
smarty 同じ要素内で改行
-
配列のbindValue方法について
おすすめ情報