PHP使用foreach修改JSON文件 合并表单POST数据到指定子字段方法
实现代码(PHP环境)
// 1. 声明原JSON字符串 $json = '[{"Email":"myemail1@domain.com","Name":"company 1","Tel1":"xx-xx-xx","Adresse":"XXXXXX"},{"Email":"myemail2@domain.com","Name":"Company 2","Tel1":"xx-xx-xx","Adresse":"XXXXXX"}]'; // 2. 声明表单提交的vars数组,元素顺序和JSON数据顺序一一对应 $vars = [ ["fname" => "Ameur", "lname" => "KHIL"], ["fname" => "Marak", "lname" => "Cristo"] ]; // 3. 将JSON字符串解码为PHP关联数组,方便字段操作 $jsonArr = json_decode($json, true); // 4. 遍历数组合并字段 foreach ($jsonArr as $index => &$item) { // 合并对应表单数据 + 原数据的Tel1、Adresse字段,存入vars子字段 $item['vars'] = array_merge( $vars[$index], [ "Tel1" => $item['Tel1'], "Adresse" => $item['Adresse'] ] ); // 删除根节点的Tel1和Adresse字段,和你要求的输出格式对齐;如果需要保留这两个字段直接注释下面两行即可 unset($item['Tel1']); unset($item['Adresse']); } // 取消数组引用,避免后续操作异常 unset($item); // 5. 转换为最终JSON字符串 $result = json_encode($jsonArr); // 可直接输出验证结果 echo $result;
注意事项
- 遍历过程中通过索引
$index匹配JSON数据和vars数组的对应关系,只要两个数组的排序一致就能保证数据对应正确 json_decode第二个参数传true是为了解码为关联数组,比对象格式操作更灵活
内容的提问来源于stack exchange,提问作者ameur khila
相关产品推荐
相关产品推荐

