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()函数逐行解析您的文件,并且被拉入的每一行都file()包含一个结束该行的字符。

听起来你想trim()去掉空格。请注意,这具有删除尾随空格和制表符的额外好处。

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

这会给出你想要的结果吗?

于 2012-07-26T04:57:37.337 回答