PHP如何读取分号分隔的CSV文件并将首行作为列名生成关联数组
解决方案
你当前代码使用str_getcsv默认的逗号作为字段分隔符,仅需修改array_map的回调逻辑,给str_getcsv显式指定分号作为分隔符即可,修改后的完整代码如下:
// 改动点:自定义回调给str_getcsv指定分号分隔符 $csv = array_map(function($line) { return str_getcsv($line, ';'); }, file("activeproducts_per_customer.csv", FILE_SKIP_EMPTY_LINES)); $keys = array_shift($csv); // 后续逻辑保持不变 foreach ($csv as $i => $row) { $csv[$i] = array_combine($keys, $row); } // echo "<pre>"; // print_r($csv); // echo "</pre>"; return $csv;
补充说明
- 如果你的CSV文件用了非默认的字段包裹符(默认是双引号
")、转义符,可以按需给str_getcsv传第三、第四个参数调整,语法为str_getcsv(字符串, 分隔符, 包裹符, 转义符) - 大文件读取场景建议换用
fgetcsv逐行读取,避免一次性加载整个文件到内存导致溢出
内容的提问来源于stack exchange,提问作者TDwebdev
相关产品推荐
相关产品推荐

