1

「B-small-practice.in」という名前のファイルがあり、その内容は次のとおりです

this is a test
foobar
all your base
class
pony along 

私はコードを書きました。その機能は、各行の単語を逆にして別のファイル "output.txt" に書き込むことです。
コードは次のとおりです。

$file = fopen("B-small-practice.in", "r");
$lines = array();
while(!feof($file)){
$lines[] = fgets($file); 
}
fclose($file);

$output = fopen("output.txt", "a");

foreach($lines as $v){
    $line = explode(" ", $v);
    $reversed = array_reverse($line);
    $reversed = implode(" ", $reversed);
    fwrite($output, $reversed."\n");
}

fclose($output);
?>

コードの予想される出力は、次のように「output.txt」に書き込まれます。

    test a is this
    foobar
    base your all
    class
    along pony 

しかし、これは私が得るものです:

test  
  a is this
foobar  

base  
 your all  
class

along  
 pony   

何がそのように見えるのですか?

4

2 に答える 2

3

爆発後の「最後の」部分にはまだ改行が含まれているため、元に戻して内破した後、改行は最初の単語の後ろにあります。trim()爆発する前に文字列だけを追加"\n"し、出力時に改行( )を再度追加します(すでに行っています)。

于 2012-04-13T10:03:41.300 に答える
2

線にはすでに が\nありますが、これは取り除かれません。

これを試して:

<?php

$file = fopen("B-small-practice.in", "r");
$lines = array();
while(!feof($file)){
$lines[] = fgets($file); 
}
fclose($file);

$output = fopen("output.txt", "a");

foreach($lines as $v){
    $v = trim($v);
    $line = explode(" ", $v);
    $reversed = array_reverse($line);
    $reversed = implode(" ", $reversed);
    fwrite($output, $reversed."\n");
}

fclose($output);
?>

trim関数はそこから余分なものを取り出す必要\nがあります。

于 2012-04-13T10:03:41.813 に答える