ホームページ  >  記事  >  バックエンド開発  >  CSVをバイト単位で読み取る

CSVをバイト単位で読み取る

PHPz
PHPz転載
2024-02-09 09:30:19429ブラウズ

将 csv 读入字节

php エディタ Xigua では、CSV ファイルをバイト単位で読み込む方法を紹介します。 CSV は、表形式データの保存と交換によく使用される一般的なデータ形式です。従来の方法では、ファイル操作関数を使用して CSV ファイルを 1 行ずつ読み取り、配列またはオブジェクトとして保存します。ただし、CSV ファイルをバイト単位で読み取ることで、大規模なデータ セットをより効率的に処理でき、メモリ使用量の点でより経済的になります。このメソッドは、fopen 関数を使用してファイルをバイナリ モードで開き、fread 関数を使用してファイルの内容を読み取ることで実装できます。読み取られたバイトは、データ分析および操作のために配列またはその他のデータ構造にさらに処理できます。この方法により、PHP の機能を活用して CSV ファイルを処理し、データ処理の効率を向上させることができます。

質問内容

csvファイルを2Dバイトスライスに読み込むときに、奇妙な動作が発生しました。最初の 42 行は問題ありませんが、余分な行末がデータに挿入されているようで、事態が混乱します:

最初の 42 回の最初の行:

リーリー

最初の行を 43 行の後に追加します:

リーリー

問題を再現するための最小限のコード:

リーリー

私が使用した CSV:

リーリー

row[][]byte には行ごとの CSV データが含まれると予想していました

回避策

すでに提案されているように、本当に encoding/csv を使用する必要があります。 #####。 言い換えれば、問題の原因は

bytes() 関数の上の godoc: にあります。 リーリー したがって、その後の

scan()

の呼び出しでは、返されたバイト スライスが変更される可能性があります。これを回避するには、 のようなバイトスライスをコピーする必要があります。 リーリー

以上がCSVをバイト単位で読み取るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。