2011-02-06 9 views
0

私は私は両方のライン(2番目のテキストファイルの最初のテストファイルとLINE1のライン1。数千行のためのような)を組み合わせて、いくつかの機能に2つのファイルをループして組み合わせるにはどうしたらいいですか?

を行い、その後2つのテキストファイルを持っているし、両方のファイルをループにしたいですか一つのファイルを通って、そのコード用のループに精通は以下の通りである:

$lines = file('data.txt'); 
foreach ($lines as $line) { 

//some function 


} 

が、どのように私は2つのファイルのために行うとボーテラインを結合しますか?

+0

「検索テーブル」とはどういう意味ですか?何を検索したいですか? –

+0

2つのファイルのいくつかのデータが、行単位で結合され、次にtable1を検索し、結果をtable2に格納すると言う。 – limo

+0

@limo:はい、* * *を検索しますか?ファイル構造とテーブルレイアウトの例を質問に追加してください。 –

答えて

1

わからない希望する期間に応じて、関数freadで読み込まれたバイトを調整する必要があります、あなたが他の前に、一つのファイルにファイルの終わりを打つ場合は、トラブルに遭遇するかもしれないが、彼らは同じ長さでない場合にのみ起こる:両方のファイルを開き、彼らとものを行う:

$file1 = fopen("/path/to/file1.txt","r"); //Open file with read only access 
$file2 = fopen("/path/to/file2.txt","r"); 
$combined = fopen("/path/to/combined.txt","w"); //in case you want to write the combined lines to a new file 

while(!feof($file1) && !feof($file2)) 
{ 
    $line1 = trim(fgets($file1)); //Grab a line of the first file, note the trim will clip off the carriage return/new line at the end of the line, can remove it if you don't need it. 
    $line2 = trim(fgets($file2)); //Grab a line of the second file 

    $combline = $line1 . $line2; 

    fwrite($combined,$combline . "\r\n"); //Write to new combined file, and add a new carriage return/newline at the end of the combined line to replace the one trimmed off. 

    //You can do whatever with data from $line1, $line2, or the combined $combline after getting them. 
} 

注意$ line1または$ line2をに設定する制御文が必要な場合がありますまたは何か他の場合feof()それぞれのファイル、一度両方のファイルの終わりにヒット、whileループが終了します。

+0

これはこれまでの最良の例です。 'fgets'を使うことを覚えていれば、ほとんどのPHPユーザーはそれが存在するのを忘れているようです。 – shadowhand

0

例:

$file1 = fopen("file1.txt", "rb"); 
$file2 = fopen("file2.txt", "rb"); 

while (!feof($file1)) { 
    $combined = fread($file1, 8192) . " " . fread($file2, 8192); 
    // now insert $combined into db 
} 
fclose($file1); 
fclose($file2); 
  • あなたはwhile条件に、2つのファイルの長いを使用したいと思うでしょう。
  • あなたはそれに、あなたのライン「は」
  • 変更されているものは何でも区切りあなたがテーブルを検索することによって何を意味するか
0

これは、CrayonとTimが示したようにプログラムで行うことができます。両方のファイルの行数が同じであれば動作します。行番号が異なる場合は、大きなファイルをループして、すべての行を取得するか、両方でEOFをチェックする必要があります。

行ごとに組み合わせるには、非常に高速なunixコマンドペーストを使用することがよくあります。これは、長さの異なるファイルも考慮に入れます。コマンドラインでこれを実行します。

paste file1 file2 > output.txt 

は、コマンドラインオプション、フィールドの区切り文字のpasteためmanpageを参照してください。

man paste 
関連する問題