PHPによるCSVファイルの逆読み込み
P粉512729862
P粉512729862 2023-08-08 18:24:19
0
2
646
<p>CSV ファイルを読み取る PHP スクリプトがあります。CSV ファイルを最後の行から、つまり逆の順序で読み取るようにしたいと考えています。 </p> <pre class="brush:php;toolbar:false;"><?php $f = fopen("./data/data-esp8266-$idluf-$currentdata.csv", "r"); fgets($f); while (($line = fgetcsv($f)) !== false) { $row = $line[0]; $cells =explode(";",$row); echo "n"; foreach ($cells as $cell) { echo "<td><a style='text-decoration:none;color:#fff;' class='tooltip' data-tool=' $cell'>" . htmlspecialchars($cell) . "< /a>n"; } echo "</tr>n"; } fclose($f); ?></pre> <p><br /></p>
P粉512729862
P粉512729862

全員に返信(2)
P粉118698740

読み取りたいファイルが区切り文字として改行のみを含む「単純な」ファイルの場合、後ろから前への読み取りは非常に簡単です。ただし、CSV は、フィールドと行の区切り文字、引用符 (引用符)、およびエスケープ文字を含む、より複雑な形式です。

のようなデータが表示される場合があります。 リーリー

これは完全に有効な CSV ですが、現在フォーラムで提案されているソリューションのほとんどには、データの逆読み取りに問題があります。

最も信頼性の高い方法は、まずファイルの先頭からデータを読み取り、次にこの情報を使用してデータを逆方向に読み取ることです。最も単純なバージョンは、すべてを配列に入れてから、その配列を逆に読み取ることです。例:

リーリー

ただし、大きなファイルを処理している場合は、すべてのデータを保存する必要があるため、メモリの制約に遭遇する可能性があります。

別の方法は、ファイルを 1 回読み取り、レコードの先頭にファイル オフセットのみを保存し、それらのオフセットを使用して再度逆方向に反復することです。


リーリー

ファイルを 2 回走査する必要があるというトレードオフがありますが、メモリの制約がある場合は、これを行う必要があります。

以上のことを踏まえると、可能であれば、データベースで簡単にデータの順序を変更できるデータベースにデータを配置する方が良い選択肢になります。このコードはすでにデータベース関連の機能をある程度再実装していますが、さらにひどいものです。

いいねを押す +0
P粉513316221

あるいは、for ループを使用することもできます

リーリー

このメソッドは、array_reverse() 関数に基づく他のメソッドよりも高速である必要があります

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート