P粉1186987402023-08-09 12:56:44
読み取りたいファイルが区切り文字として改行のみを含む「単純な」ファイルの場合、後ろから前への読み取りは非常に簡単です。ただし、CSV は、フィールドと行の区切り文字、引用符 (引用符)、およびエスケープ文字を含む、より複雑な形式です。
のようなデータが表示される場合があります。 リーリー これは完全に有効な CSV ですが、現在フォーラムで提案されているソリューションのほとんどには、データの逆読み取りに問題があります。
最も信頼性の高い方法は、まずファイルの先頭からデータを読み取り、次にこの情報を使用してデータを逆方向に読み取ることです。最も単純なバージョンは、すべてを配列に入れてから、その配列を逆に読み取ることです。例:
リーリー
ただし、大きなファイルを処理している場合は、すべてのデータを保存する必要があるため、メモリの制約に遭遇する可能性があります。
別の方法は、ファイルを 1 回読み取り、レコードの先頭にファイル オフセットのみを保存し、それらのオフセットを使用して再度逆方向に反復することです。
ファイルを 2 回走査する必要があるというトレードオフがありますが、メモリの制約がある場合は、これを行う必要があります。
以上のことを踏まえると、可能であれば、データベースで簡単にデータの順序を変更できるデータベースにデータを配置する方が良い選択肢になります。このコードはすでにデータベース関連の機能をある程度再実装していますが、さらにひどいものです。
P粉5133162212023-08-09 10:41:12
あるいは、for ループを使用することもできます
リーリーこのメソッドは、array_reverse() 関数に基づく他のメソッドよりも高速である必要があります