使用PHP解析CSV文件并将数据按指定列名结构化存储
PHP读取CSV生成指定结构化数据方案
调整后完整代码
<?php // 定义你需要的三个列名 $customColumns = ['Mobile Number', 'Carrier Name', 'Validity Status']; $structuredData = []; if (($open = fopen("Book1.csv", "r")) !== FALSE) { while (($row = fgetcsv($open, 1000, ",")) !== FALSE) { // 清理字段前后多余空格,适配CSV原始格式 $row = array_map('trim', $row); // 组合列名与字段值,转成stdClass对象 $record = (object)array_combine($customColumns, $row); // 按运营商分组,匹配你提供的参考结构逻辑 $carrierName = $record->{'Carrier Name'}; $structuredData[$carrierName][] = $record; } fclose($open); } echo "<pre>"; var_dump($structuredData); echo "</pre>";
逻辑说明
- 预先定义指定的列名数组,作为每条记录的属性名
- 读取CSV每行数据后先清理字段前后的空格,解决原始CSV中部分字段带前置空格的问题
- 通过
array_combine()将列名与对应字段值绑定生成关联数组,强转成stdClass对象,实现你要的带命名属性的结构化存储 - 按运营商名称作为外层数组的键做分组,和你给出的参考结构格式完全对齐
可选调整
如果你不需要按运营商分组,仅需要所有记录平级存储为带指定属性的对象数组,可将循环内的分组逻辑替换为$structuredData[] = $record;即可。
内容的提问来源于stack exchange,提问作者Nathan Bayne
相关产品推荐
相关产品推荐

