この記事の内容は php ファイル操作です - 他のファイルからこのファイルにデータを追加します。今すぐみんなと共有して、必要な友達はそれを参照できます
GitHub ソース コード
実際、私たちのプログラムは次の答えに基づいています。次の質問:
2 つのテキスト ファイル A.txt B.txt
A.txt 3,000 万行があり、ユーザー ID は一意であり、ユーザー ID とユーザー名はスペースで区切られています。以下に示すように:
userid username
1 yi
2 er
3san
……
b.txtには3,000万行があり、useridは一意であり、ユーザーIDとリアル名は以下に示すようにスペースで区切られています。 B.txt の 3 列目に、時間計算量が示されています。
今回のプログラムでは、2つのファイルの行データはデフォルトで1対1に対応しており、Aのn行目のデータとBのn行目のデータが対応しています。私たちのプログラムの複雑さは O(n) です。
しかし、実際の操作では、2つのファイルのデータ行が1対1に対応していない状況が必ず発生します。この場合、時間計算量がO(nの最も単純な操作のみを考えました。 ^2)。この問題を解決するためのこれより優れたアルゴリズムはありません。
ファイルを読み取り、O(1) または O(logn) のクエリを使用してデータ構造に構築すると、ファイルが大きすぎる場合、複雑さは O(n) または O(nlogn) になります。 、構築 データ構造が大きすぎる状況に対処する方法、データベース B-Tree インデックスから学ぶ? B.txt
userid username
1 yi2 er
3 san… …
B.txt 3,000 万行、ユーザー ID は一意であり、以下に示すように、Userid と RealName はスペースで区切られます。Userid RealName
12
3
…
文章を書いて、b.txt でユーザー ID に対応するユーザー名を見つけて、A.TXT で見つけて、B.txt の 3 番目の列に記入して、時間計算量を入力してください。
今回のプログラムでは、2つのファイルの行データはデフォルトで1対1に対応しており、Aのn行目のデータとBのn行目のデータが対応しています。私たちのプログラムの複雑さは O(n) です。
しかし、実際の操作では、2つのファイルのデータ行が1対1に対応していない状況が必ず発生します。この場合、時間計算量がO(nの最も単純な操作のみを考えました。 ^2)。この問題を解決するためのこれより優れたアルゴリズムはありません。
ファイルを読み取り、O(1) または O(logn) のクエリを使用してデータ構造に構築すると、ファイルが大きすぎる場合、複雑さは O(n) または O(nlogn) になります。 , build データ構造が大きすぎる場合の対処方法、データベースの b-tree インデックスの実践から学ぶ?
<?php header("content-type:text/html;charset=utf-8"); function decodeLine(string $lineData, string $delimiter = null) { if (is_null($delimiter)) { $delimiter = ' '; } return explode($delimiter, $lineData); } function encodeLine(array $dataList, string $delimiter = null) { if (is_null($delimiter)) { $delimiter = ' '; } return implode($delimiter, $dataList); }$testA = fopen('./TestData/FileOperation/testA.txt', 'r');$testB = fopen('./TestData/FileOperation/testB.txt', 'r+');$tmpFile = tmpfile();//while (($bBuffer = fgets($testB)) != false) { $bList = decodeLine(trim($bBuffer, "\n\r")); $tmpList = $bList; if (($aBuffer = fgets($testA)) != false) { $aList = decodeLine(trim($aBuffer, "\n\r")); if ($aList[0] == $bList[0]) { $strEncoding = mb_detect_encoding($aList[1], ['ASCII', 'UTF-8', 'GB2312']); $resStr = mb_convert_encoding($aList[1], 'UTF-8', $strEncoding); array_push($tmpList, $resStr."\n"); } } fwrite($tmpFile, encodeLine($tmpList)); } rewind($tmpFile); rewind($testB);while (!feof($tmpFile)) { $tmpBuffer = fread($tmpFile, 1024); fwrite($testB, $tmpBuffer); }fclose($tmpFile);fclose($testA);fclose($testB);
以上がPHP ファイル操作 - 他のファイルからこのファイルにデータを追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。