【问题标题】:str_getcsv returns Incomplete Column on Tab-delimited CSVstr_getcsv 在制表符分隔的 CSV 上返回不完整列
【发布时间】:2016-12-26 01:50:51
【问题描述】:

这是我的制表符分隔的 CSV(顺便说一下,我在此处设置了空格而不是制表符):

header1 header2 header3 header4
value1  value2  value3
value2  value2 

如果我使用此函数,它会将 CSV 作为数组返回但不完整:

$content = file($file, FILE_SKIP_EMPTY_LINES);
$rows = array_map('str_getcsv', $content, array_fill(0, count($content), "\t"));

这也不起作用:

if(file_exists($file)){
    $rows = array_map(function($v){
        return str_getcsv($v, "\t");
    }, file($file, FILE_SKIP_EMPTY_LINES));
}

输出:

Array(
    [0] => Array(
            [0] => header1
            [1] => header2
            [2] => header3
            [3] => header4
        )
    [1] => Array(
            [0] => value1
            [1] => value2
            [2] => value3
        )
    [2] => Array(
            [0] => value1
            [1] => value2
        )
)

它似乎将空选项卡视为一个,因此与标题相反,值将具有不完整的数组。

预期:

Array(
    [0] => Array(
            [0] => header1
            [1] => header2
            [2] => header3
            [3] => header4
        )
    [1] => Array(
            [0] => value1
            [1] => value2
            [2] => value3 
            [3] =>
        )
    [2] => Array(
            [0] => value1
            [1] => value2
            [2] => 
            [3] => 
        )
)

【问题讨论】:

  • 是的,我意识到我已经发布了一个以空格分隔的 CSV,但本质上,如果它是制表符,输出将与上面的值相同,其中值的列数不相等。

标签: php arrays csv


【解决方案1】:

如果你想要这样的输出:

数组( [0] => 标题 1 [1] => 标头2 [2] => 标题 3 [3] => 标题 4 [4] => 价值1 [5] => 价值2 ... )

只需更改您的数据 csv,但如果您不想更改它。
你可以尝试使用explode函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2014-09-13
    • 2013-04-19
    • 2019-12-25
    • 2021-02-23
    相关资源
    最近更新 更多