【问题标题】:PHP extra space after array_merge()array_merge() 后的 PHP 额外空间
【发布时间】:2012-07-26 04:56:13
【问题描述】:

我正在尝试合并从多行文本文件导入的数组元素,用逗号分隔:

$ 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

)

为什么会有空格?我该如何摆脱它们?

【问题讨论】:

    标签: php arrays array-merge


    【解决方案1】:

    在插入数组之前添加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,谢谢你;如果你想修剪每个变量,我明白为什么你需要一个临时变量,但我只需要修剪线条,ghoti 首先得到了答案。
    【解决方案2】:

    FILE_IGNORE_NEW_LINES 标志添加到您的file() 调用中。

    $fa=file("input.txt", FILE_IGNORE_NEW_LINES);
    

    【讨论】:

    • +1,太好了,这也正是我需要的。希望我能选择多个正确答案。
    【解决方案3】:

    它们不是空格,它们是换行符 (\n)。

    输入文件中的所有内容都在您的数组中表示,它只是拆分为数组元素。 file() 函数逐行解析您的文件,file() 拉入的每一行都包含一个结束行的字符。

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

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

    这能得到你想要的结果吗?

    【讨论】:

    • 谢谢,这正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多