猿问

array_map() 仅适用于数组的第一个元素

我正在使用以下电话:

$csv = array_map('str_getcsv', file($file), array($delimiter, '"', "\\"));

第一行被正确解析为数组,但第二行保留为字符串。测试文件中的CSV分隔符(分号)是一致的,我找不到奇怪的字符。如果我添加sep=;. 什么问题可能导致这种情况?


慕工程0101907
浏览 164回答 1
1回答

慕娘9325324

这是对array_map如何工作的误解(文档中的语言相当混乱)。取给定的片段:$csv = array_map('str_getcsv', file($file), array($delimiter, '"', "\\"));这在功能上类似于执行以下操作:str_getcsv('line one of $file', $delimiter);str_getcsv('line two of $file', '"');str_getcsv('line three of $file', "\\");这就是为什么第一行似乎有效的原因,因为分隔符是正确的,但后续的却没有,因为第二个参数在 CSV 的上下文中不正确。
随时随地看视频慕课网APP
我要回答