如何在PHP中将JSON数组值转换为带id键的对象数组?
PHP实现JSON数组格式转换
你可以按以下步骤实现需求:
准备并解码原始JSON数据
先确保你已经获取到目标JSON数据(比如通过API请求、本地文件读取等方式),再用json_decode将其转为PHP关联数组:// 示例原始JSON数据(实际场景替换为你的数据获取逻辑) $jsonData = '{"result": [548915, 505031, 28967]}'; // 解码为关联数组,第二个参数true确保返回数组而非对象 $data = json_decode($jsonData, true);转换ID数组的结构
核心是把原数组里的每个数字ID,包装成带id键的关联数组。用array_map可以快速实现:// 遍历result数组,转换每个元素的格式 $data['result'] = array_map(function($id) { return ['id' => $id]; }, $data['result']);如果你更习惯用foreach循环,也可以这么写:
$newResult = []; foreach ($data['result'] as $id) { $newResult[] = ['id' => $id]; } $data['result'] = $newResult;重新编码为格式化的JSON
最后用json_encode把处理后的数组转回JSON,加上JSON_PRETTY_PRINT参数让输出和你想要的格式一致:$finalJson = json_encode($data, JSON_PRETTY_PRINT); // 输出或保存结果 echo $finalJson;
完整可运行示例代码
<?php // 替换为你的JSON数据获取逻辑,比如从API接口读取、本地文件读取等 $jsonData = '{"result": [548915, 505031, 28967]}'; // 解码JSON并检查错误 $data = json_decode($jsonData, true); if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解码失败: ' . json_last_error_msg()); } // 检查result数组是否存在并有效 if (!isset($data['result']) || !is_array($data['result'])) { die('原始数据格式不符合要求'); } // 转换ID格式 $data['result'] = array_map(function($id) { return ['id' => $id]; }, $data['result']); // 生成格式化后的JSON $finalJson = json_encode($data, JSON_PRETTY_PRINT); echo $finalJson; ?>
运行这段代码后,输出的JSON就是你想要的格式:
{ "result": [ { "id": 548915 }, { "id": 505031 }, { "id": 28967 } ] }
内容的提问来源于stack exchange,提问作者David Chriss
相关产品推荐
相关产品推荐

