如何用PHP将cccr_mems.json中的ID写入USCF_ID.txt文件
PHP提取JSON文件中的ID并写入文本文件的解决方案
首先咱们先聊聊你原代码里的几个核心问题,这也是功能没法正常跑起来的原因:
- 你用
file()函数读取JSON文件,这个函数会把文件按行拆成数组,但你的JSON是一个完整的数组结构,直接遍历行根本没法正确解析里面的ID字段 fwrite()的用法完全错了,第一个参数得是打开的文件句柄,第二个才是要写入的内容,你写的fwrite($lines.ID)完全不符合语法规范- 换行的写法
fwrite " ";也是语法错误,根本没法执行
接下来给你修正后的完整代码,我会一步步拆解关键逻辑:
<?php // 读取JSON文件的全部内容 $jsonContent = file_get_contents('cccr_mems.json'); if ($jsonContent === false) { exit("无法读取cccr_mems.json文件!"); } // 将JSON字符串解析为PHP关联数组 $members = json_decode($jsonContent, true); if ($members === null) { exit("JSON解析失败,请检查文件格式是否正确!"); } // 打开目标文件准备写入,w模式会清空原有内容 $myfile = fopen("USCF_ID.txt", "w"); if ($myfile === false) { die("无法打开USCF_ID.txt文件进行写入!"); } // 遍历每个成员,提取ID并写入文件 foreach ($members as $member) { // 确保当前元素有ID字段再写入,避免报错 if (isset($member['ID'])) { fwrite($myfile, $member['ID'] . PHP_EOL); } } // 关闭文件 fclose($myfile); echo "ID已成功写入USCF_ID.txt文件!"; ?>
关键细节说明:
file_get_contents():这个函数会一次性读取整个JSON文件的内容,比file()更适合处理这种完整的JSON结构json_decode($jsonContent, true):第二个参数设为true,会把JSON对象转换成PHP的关联数组,这样我们就能用$member['ID']直接获取ID值;如果不设这个参数,得到的是对象,需要用$member->ID来访问PHP_EOL:这是PHP的内置常量,代表当前操作系统的换行符,比直接写"\n"更适配不同系统isset($member['ID']):做个简单的合法性检查,避免JSON里某个对象缺失ID字段时触发报错
这样运行代码后,USCF_ID.txt里就会每行一个ID编号,完全满足你的需求。
内容的提问来源于stack exchange,提问作者verlager
相关产品推荐
相关产品推荐

