3

複数行のテキストファイルからインポートした配列要素を、コンマで区切ってマージしようとしています。

$ cat input.txt 
one,two,three,four
red,blue,green
human,klingon,dolphin

私が取得したいのは、10個のアイテムを含む単一の配列です。私が試したコードはこれです:

<?php

$fa=file("input.txt");
$w=array();
foreach($fa as $combo) {
    $w=array_merge($w,explode(",",$combo));
}
print_r($w);

?>

問題は、行末の後にリターンが返ってくるようです。

Array
(
    [0] => one
    [1] => two
    [2] => three
    [3] => four

    [4] => red
    [5] => blue
    [6] => green

    [7] => human
    [8] => klingon
    [9] => dolphin

)

なぜそこにスペースがあるのですか?どうすればそれらを取り除くことができますか?

4

3 に答える 3

3

trim()配列に挿入する前にaを追加して、文字列の最初と最後から空白文字を削除します。

あなたの場合、最初に一時変数で保存する必要があります:

$words = explode(',', $combo);

// Trim away white spaces for each words
$words = array_map('trim', $words);

// Now they're trimmed, array_merge them
$w = array_merge($w, $words);
于 2012-07-26T04:57:44.453 に答える
2

FILE_IGNORE_NEW_LINES通話にフラグを追加しますfile()

$fa=file("input.txt", FILE_IGNORE_NEW_LINES);
于 2012-07-26T05:00:25.733 に答える
1

それらはスペースではなく、改行です(\n)。

入力ファイル内のすべてが配列で表され、配列要素に分割されるだけです。このfile()関数はファイルを1行ずつ解析し、によって引き込まれる各行にfile()は、その行を終了する文字が含まれます。

trim()空白を削除したいようです。これには、末尾のスペースとタブを削除するという追加の利点があることに注意してください。

    $w=array_merge($w,explode(",",trim($combo)));

それはあなたが望む結果をもたらしますか?

于 2012-07-26T04:57:37.337 に答える