dポイントプレゼントキャンペーン実施中!

お世話になります。

[データ(sort.csv)]
text,text,text,text,200610111010
text,text,text,text,200610111110
text,text,text,text,200610111210
text,text,text,text,200610111310
のようなデータを一番最後の項目(200610111010)で時間ソーティングするプログラムを作成したいのですがうまくいきません。

アドバイスお願いします。

A 回答 (3件)

こんな感じでいかがでしょう?



<?php

// ファイルオープン
$handle = fopen("sort.csv", "r");

// csvファイルを配列$dataに取得
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$all_data[] = $data; // データを集約
$sort_col[] = $data[4]; // ソート対象のカラムを別に記録する
}

// ソート前のデータ参照
var_dump($all_data);

// $sort_colのデータを使って、$all_dataを昇順にソート(SORT_ASC)
array_multisort($sort_col, SORT_ASC, $all_data);

// ファイルクローズ
fclose($handle);

// ソート結果参照
var_dump($all_data);

?>
    • good
    • 0

どのようにうまくいかないのでしょうか


時間項目が固定長なら特に問題ないと思います。
    • good
    • 0

一番最後の項目は排他的な値がくるのでしょうか?


ダブルかダブらないかでだいぶ書き方が違うと思います。
ダブル場合は2次ソート列が必要になるとおもいますが・・・

ちなみにここでいう「時間ソーティング」というのがよくわかりませんが
単純に文字列で順列にソートすればよいのでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!