1

アルファベット順に並べ替えてから、この配列から重複を削除しようとしています。次に、配列内の各要素をテキスト ファイル内の独自の行に書き込もうとしています。

つまり、並べ替えられた一意の配列の 1 つの要素のみが 1 行に表示されます。

しかし、私が得ているのは空のテキストファイルだけです。

$sorted_lines各要素が新しい行になるように、この配列の内容をテキスト ファイルに書き込むにはどうすればよいですか?

これが私のコードです:

<?php
$lines = file('american.txt');
$lines = array_walk($lines, 'trim'); 
$sorted_lines = sort(array_unique($lines));
$out = fopen("new.txt", "w");
foreach($sorted_lines as $line){
    $line .= "\n";
    fwrite($out, $line);
}
?>
4

2 に答える 2

2

array_walk()sort()はどちらも参照渡しであり、戻り値は成功/失敗のブール値 true/false です

array_walk($lines, 'trim');
$sorted_lines = array_unique($lines);
sort($sorted_lines);
于 2013-06-07T15:15:48.033 に答える
1

関数array_walk()およびsort()では、最初のパラメーターは値ではなく参照によって渡されます。これは、関数が結果を返すのではなく、最初のパラメーターを直接変更することを意味します。array_walk()配列ではなく、関数が機能するかどうかを示すブール値を返します。したがって、機能は設定されています$lines=1sort()同じことをします。

PHP のドキュメントでは、パラメーターが参照によって渡されることを示すには、パラメーターの前にアンパサンドを付けます。たとえば、sort宣言は次のようになります。

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

最初のパラメータは&$arrayではなく であることに注意してください$array。これは、カスタム関数で参照を宣言するのと同じ方法です。

于 2013-06-07T15:21:56.600 に答える