如何在PHP中修剪数组中的空格

时间:2014-07-23 15:42:43

标签: php arrays string csv

我试图解析一个CSV文件,作为其中的一部分,我想从我的所有单元格中删除前导/尾随空格。由于它是一个CSV文件,因此格式化为2D数组。最初我尝试过:

foreach($csv as $row){
    foreach($row as $cell){
        $cell = trim($cell);
    }
}

然而结果是未修剪的。

接下来,我尝试使用array_map作为建议here

$csv = array_map('trim', $csv);

这让我回到了一排空行。所以我也试过了

foreach($csv as $row){
    $row = array_map('trim', $row);
}

像我的第一次尝试一样,没有任何改变。

以下是我用作输入的CSV数据:

名字,姓氏,联系方式,电话,电子邮件 John,Doe,电子邮件,1-XXX-XXX-XXXX,john @ example.com Jane,Doe,电话,1-XXX-XXX-XXXX,jane @ example.com

特别是我试图让我的脚本修剪第一行最后一个单元格中的前导空格(" Email" =>" Email")。

4 个答案:

答案 0 :(得分:3)

进行修剪时,您不会修改原始数组。您应该在foreach循环中通过引用获取值。

foreach($csv as &$row){
    foreach($row as &$cell){
        $cell = trim($cell);
    }
}

来自documentation

  

为了能够直接修改循环内的数组元素   使用&前面的$ value。在这种情况下,值将由   reference

答案 1 :(得分:2)

您需要引用$row才能对数组进行更改(请注意&):

foreach($csv as &$row){
    $row = array_map('trim', $row);
}

答案 2 :(得分:0)

如果你看到它就像你放在这里一样,

" Email" => "Email"

你必须从密钥修剪它,你能说明你如何分配命名标题。因为我会在那里修剪它,但是使用array_map('trim',$ data)将删除空格,我整天都这样做。

只需清理你可以做的钥匙,

 $keys = array_map( 'trim', array_keys($data) );
 $data = array_combine( $keys, $data );

答案 3 :(得分:0)

$input = [
    'parent' => [
        'child' => ' element to be trimmed '
    ]
];
array_walk_recursive($input, function (&$item) {
    if (!is_array($item)) {
        $item = trim($item);
    }
});
相关问题