이 글의 내용은 PHP 파일 작업입니다. 다른 파일의 데이터를 이 파일에 추가하고 이제 모든 사람과 공유하세요. 도움이 필요한 친구들이 참조할 수 있습니다
GitHub 소스 코드
사실 저희 프로그램은 다음에 대한 답변을 기반으로 합니다. 다음 질문:
두 개의 텍스트 파일 A.txt B.txt
A.txt 3천만 줄이 있습니다. userid는 고유하며 userid와 사용자 이름은 아래와 같이 공백으로 구분됩니다.
userid 사용자 이름
1 yi
2 er
3 san
… …
B.txt에는 3천만 줄이 있으며, userid는 고유하고, userid와 realname은 아래와 같이 공백으로 구분됩니다. > 해당 사용자 이름은 A.txt에서 찾을 수 있으며 채워져 있습니다. B.txt의 세 번째 열에 시간 복잡도가 나와 있습니다.
우리 프로그램에서 두 파일의 행 데이터는 기본적으로 일대일 대응입니다. 즉, A의 n번째 데이터 행은 B의 n번째 데이터 행에 해당합니다. 이런 식으로 시간은 우리 프로그램의 복잡성은 O(n) 입니다.
하지만 실제 연산에서는 분명히 두 파일의 데이터 라인이 일대일 대응이 아닌 상황이 있을 겁니다. 이 경우에는 시간 복잡도가 O(n)인 가장 간단한 연산만 생각했습니다. ^2) 이 문제를 해결하는 데 더 좋은 알고리즘이 있는지 모르겠습니다.
파일을 읽고 O(1) 또는 O(logn) 쿼리로 데이터 구조로 빌드하면 복잡성은 O(n) 또는 O(nlogn)이 되어야 합니다. 단, 파일이 너무 크면. , 빌드 데이터 구조가 너무 큰 상황을 처리하고 데이터베이스 B-트리 인덱스에서 학습하는 방법은 무엇입니까? B.txt
userid username
1 yi2 er
3 san… …
B.txt 3천만 줄, 사용자 ID는 고유하며 Userid와 RealName은 아래와 같이 공백으로 구분됩니다.Userid RealName
12
3
…
문구를 작성하고, b.txt에서 userid에 해당하는 사용자 이름을 찾고, A.TXT에서 찾고, B.txt의 세 번째 열을 채우고 시간 복잡도를 지정하세요.
우리 프로그램에서 두 파일의 행 데이터는 기본적으로 일대일 대응입니다. 즉, A의 n번째 데이터 행은 B의 n번째 데이터 행에 해당합니다. 이런 식으로 시간은 우리 프로그램의 복잡성은 O(n) 입니다.
하지만 실제 연산에서는 분명히 두 파일의 데이터 라인이 일대일 대응이 아닌 상황이 있을 겁니다. 이 경우에는 시간 복잡도가 O(n)인 가장 간단한 연산만 생각했습니다. ^2) 이 문제를 해결하는 데 더 좋은 알고리즘이 있는지 모르겠습니다.
파일을 읽고 O(1) 또는 O(logn) 쿼리로 데이터 구조로 빌드하면 복잡성은 O(n) 또는 O(nlogn)이 되어야 합니다. 단, 파일이 너무 크면. , 빌드 데이터 구조가 너무 큰 상황에 대처하는 방법, 데이터베이스 b-트리 인덱스 실습을 통해 알아보세요.
<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!