2017-07-22 4 views
0

私はfile1から3行目ごとに読み込み、新しいファイルとして保存します2。PHPは3行目をファイルから読み込んで別のファイルに保存します

これは私が試しているものですが、動作しません。何か案は?

$myfile = file("file1.txt"); 
$lines = file($myFile); 
$newFileContent= $lines[2]; 
file_put_contents("file2.txt", $newFileContent); 

ので、FILE1.TXTは以下の内容がある場合:

1 
2 
3 
4 
5 
6 

をFILE2.TXTのみが含まれている必要があります

3 
6 
+0

ルックをモジュロ演算子にして。それがあなたの問題を解決します。 – Difster

+0

私はそれがどのように適用されるか分かりませんでした。 – jjj

+0

なぜ 'file'を2回、実際のファイルに対して1回、最初の' file'で返された配列に1回呼び出すのですか? – Bytewave

答えて

1

実際最も簡単な方法は、使用することです通常のforループ。配列は非連想であるため、配列全体に対して高価なforeachを使用することは意味がありません。

はまさにちょうど、次のようなものを使用し、あなたのサンプルデータを複製するには、次の

$lines = file('file1.txt'); 

$newContent = ''; 

$len = count($lines); // saves us from calling count() on every iteration 

for ($i = 2; $i < $len; $i += 3) { 
    $newContent .= $lines[$i]; 
} 

file_put_contents('file2.txt', $newContent); 

Working demo

+0

'foreach()'が高速で 'for()'より速いですが、どのように高価ですか? – rtfm

+0

あなたは3番目のすべての要素の代わりにすべての要素を繰り返しているので、 – Bytewave

+1

何かあれば、それはもう少し読みやすいと思います。 – Bytewave

関連する問題