如何提取JSON数组中指定部分元素并重新构建JSON数组
PHP提取数组指定键值对生成目标JSON实现方案
直接在PHP数组层做键筛选即可,不需要额外处理全量JSON的编解码冗余逻辑,核心使用PHP原生数组函数就能高效实现,具体操作逻辑:
- 定义需要保留的目标键名列表
- 用键交集函数提取对应键值对,自动保留原键值映射关系
- 将筛选后的数组编码为JSON格式
完整实现代码:
<?php // 原始定义数组 $d = array( 'key1' => 9, 'key2' => 10, 'key3' => 20, 'key4' => 60, 'key5' => 50, ); // 配置需要提取的键,按需增删即可 $targetKeys = ['key3', 'key5']; // 提取指定键对应的键值对 $filteredData = array_intersect_key($d, array_flip($targetKeys)); // 编码为目标JSON数组 $resultJson = json_encode($filteredData, JSON_UNESCAPED_UNICODE);
函数说明
array_flip($targetKeys):将键名列表的键值翻转,把要提取的键名转为数组的键,适配交集计算的入参格式array_intersect_key():返回原数组中键名存在于目标键列表的所有元素,不会改动原键和对应值的映射关系,比手动foreach循环判断更简洁高效json_encode()传入JSON_UNESCAPED_UNICODE参数是为了避免中文被转义为Unicode编码,无中文场景可省略该参数
结果验证
上述代码执行后,筛选得到的数组结构为:
array( 'key3' => 20, 'key5' => 50 )
最终生成的JSON内容为:
{"key3":20,"key5":50}
如果你已经通过json_decode拿到了解码后的全量PHP数组,直接将代码中的$d替换为你解码得到的数组变量即可,不需要修改其他逻辑。
内容的提问来源于stack exchange,提问作者cerkes
相关产品推荐
相关产品推荐

