array_map() 仅适用于数组的第一个元素
array_map() is only applying to the first element of the array
我正在使用以下调用:
$csv = array_map('str_getcsv', file($file), array($delimiter, '"', "\"));
第一行正确解析为数组,但第二行仍为字符串。 CSV分隔符在测试文件中是一致的(分号),没有发现任何奇怪的字符。如果我添加 sep=;
,文件将在 Excel 中正常打开。什么问题可能导致这种情况?
这是对 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 上下文中不正确。
我正在使用以下调用:
$csv = array_map('str_getcsv', file($file), array($delimiter, '"', "\"));
第一行正确解析为数组,但第二行仍为字符串。 CSV分隔符在测试文件中是一致的(分号),没有发现任何奇怪的字符。如果我添加 sep=;
,文件将在 Excel 中正常打开。什么问题可能导致这种情况?
这是对 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 上下文中不正确。