我正在尝试合并从多行文本文件导入的数组元素,用逗号分隔:
$ 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
)
为什么那里有空格?我如何摆脱它们?
答案 0 :(得分:3)
在插入数组之前添加trim()
,以便从字符串的开头和结尾开始修剪远离空白字符。
对于您的情况,您必须首先保存临时变量:
$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);
答案 1 :(得分:2)
将FILE_IGNORE_NEW_LINES
标记添加到file()
来电。
$fa=file("input.txt", FILE_IGNORE_NEW_LINES);
答案 2 :(得分:1)
它们不是空格,它们是换行符(\n
)。
输入文件中的所有内容都在数组中表示,它只是拆分为数组元素。 file()
函数逐行解析您的文件,file()
引入的每一行都包含一个结束该行的字符。
听起来你想要trim()
离开空白。请注意,这具有删除尾随空格和制表符的附加好处。
$w=array_merge($w,explode(",",trim($combo)));
这会给你想要的结果吗?