2017-02-16 8 views
2

テキストファイルからデータを収集し、HTMLテーブルに表示するスクリプトがあります。かなりシンプルにコーディングされています。しかし、私がしたいことは、テーブルに.$parts[1].列でソートされた結果を表示させることです。スクリプトが今度は、.$parts[0].列でソートされた結果を表示します。HTMLテーブルのテキストファイルからデータをソート

私はusortと動作するようにしようとしましたが、私はあきらめました。

これは私のコードです:

<table class="heavyTable"> 
    <thead> 
     <tr> 
     <th>Name</th> 
     <th>Date</th> 
     <th>Length</th> 
     </tr> 
    </thead> 
    <tbody> 
    <?php 
     $file_handle = fopen("bardate_domains.txt", "rb"); 

     while (!feof($file_handle)) { 
     $line_of_text = fgets($file_handle); 
     $parts = explode(' ', $line_of_text); 
     $tmp = explode('.', $parts[0]); 
     echo "<tr><td>".$parts[0]."</td><td>".$parts[1]."</td><td>".strlen($tmp[0])."</td></tr>"; 
     } 
     fclose($file_handle); 
    ?> 
    </tbody> 
</table> 

私は:)

EDIT得ることができます任意の助けに感謝:あり、合計で

0086.se 2017-04-02 
0102design.se 2017-03-03 
0141.se 2017-04-21 
0158.se 2017-03-27 
016fotboll.se 2017-03-31 
020716.se 2017-04-12 
021webb.se 2017-04-23 

: テキストファイルは次のようになりますが約40,000行。

+0

データのワースタイプは$ data [0]ですか? –

+0

元の投稿をテキストファイルのサンプルデータで更新しました。 – AndreasC

+0

次に、最初に爆発し、配列をソートしてエコーしなければならない –

答えて

0
<?php 
    $fileHandler = fopen("bardate_domains.txt", "rb"); 
    $data = []; 

    while (!feof($fileHandler)) { 
     // read file row 
     $row = fgets($fileHandler); 

     $index = count($data); 

     // explode array by space 
     $data[$index] = explode(' ', $row); 

     // explode data[$index][0] by '.', then insert into array in index 0 & 1 
     array_splice($data[$index], 0, 1, explode('.', $data[$index][0])); 
    } 

    // sort array by array index 1 
    usort($data, function ($prev, $next) { 
     if ($prev[1] == $next[1]) { 
      return 0; 
     } 

     return ($prev[1] < $next[1]) ? -1 : 1; 
    }); 

    fclose($fileHandler); 
?> 

<table class="heavyTable"> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Date</th> 
      <th>Length</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php foreach ($data as $item): ?> 
      <tr> 
       <td><?= $item[0] . '.' . $item[1] ?></td> 
       <td><?= $item[2] ?></td> 
       <td><?= $item[1] ?></td> 
      </tr> 
     <?php endforeach; ?> 
    </tbody> 
    </table> 
+0

ありがとう、しかしこれを実行するとHTTP 500エラーが出ます。私は現時点で自宅にいないので、私はあなたにもう情報を与えることはできません。 – AndreasC

+0

PHP構文チェック:解析エラー:構文エラー、予期せぬ9行目のコードで '=' index = count($ data); – AndreasC

+0

申し訳ありませんが、私は9行目に '$'を追加するのを忘れていました: 'index = count($ data);'、$ index = count($ data);です。 –

0

あなたはusort関数を使用すると、次のように独自のソート機能を提供することができます:

function cmp($a, $b) 
{ 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

しかし、あなたが最初にすべての配列要素を取得し、あなたがそれらをプリントアウトすることができ、その後にそれらを並べ替える必要があります。

0

私が理解しているように、行ごとにテーブルを作成しているので、テキストファイルの行の順番でソートされたテーブルが出力されます。テキストファイルが.$parts[0]テーブルがソートされます。

一度作成したhtmlテーブルをソートする方法はないと思うので、テーブルを作成する前にデータを並べ替えるべきです。

関連する問題