php中删除json字段需先解码为数组或对象,再删除键后重新编码。1. 关联数组用json_decode($json, true)后unset();2. 对象需转数组再删;3. 批量删用循环或array_diff_key();4. 删除前用isset()检查键存在性。

PHP 中删除 JSON 字符串里的某个字段,不能直接操作 JSON 字符串本身,需要先解码成 PHP 变量(数组或对象),删掉对应键,再重新编码为 JSON。
1. 删除关联数组中的字段(推荐用数组方式)
把 JSON 解码为关联数组(第二个参数设为 true),用 unset() 删除键,再 json_encode() 回去:
$json = '{"name":"张三","age":25,"city":"北京"}';
$data = json_decode($json, true); // 转成关联数组
unset($data['age']); // 删除 age 字段
$new_json = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $new_json; // {"name":"张三","city":"北京"}
2. 删除对象属性(用对象方式)
如果解码为对象(默认行为),需注意:对象属性不能用 unset() 直接删(会报错),要先转成数组再删,或用引用方式处理:
$json = '{"name":"李四","score":92,"class":"高三一班"}';
$obj = json_decode($json); // 转成 stdClass 对象
$data = (array)$obj; // 强制转数组
unset($data['score']);
$new_json = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $new_json; // {"name":"李四","class":"高三一班"}
3. 批量删除多个字段
适合一次删好几个键,用 array_diff_key() 或循环 unset():
$data = json_decode($json, true);
$keys_to_remove = ['temp', 'id', 'timestamp'];
foreach ($keys_to_remove as $key) {
unset($data[$key]);
}
$new_json = json_encode($data, JSON_UNESCAPED_UNICODE);
4. 安全处理:检查字段是否存在再删
避免删不存在的键触发 notice,加个判断更稳妥:
if (isset($data['email'])) {
unset($data['email']);
}
// 或一行写法:
isset($data['email']) && unset($data['email']);
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











