从json文件中删除字段(“ID”):

时间:2018-06-01 01:08:02

标签: php json

尝试从json文件中删除字段值(“ID”): 有人可以帮忙吗?

JSON:

[{
  "Rating": "1600",
  "ID": "16733310",
  "Name": "LARRATEGUI,MARTIN",
  "Expires": "1000.10.10"
},{
  "Rating": "1353",
  "ID": "16429901",
  "Name": "ADDABBO,ERIC M",
  "Expires": "1000.10.10"
}]

试过这个:

<?php 

$file = file_get_contents("uscf.json");
$file = str_replace('"ID": "[0-9][0-9][0-9][0-9]",','',$file);
$array = json_decode($file, true);  

unset ($array.ID);
echo $array;
?>

期望的结果

[{
  "Rating": "1600",
  "Name": "LARRATEGUI,MARTIN",
  "Expires": "1000.10.10"
},{
  "Rating": "1353",
  "Name": "ADDABBO,ERIC M",
  "Expires": "1000.10.10"
}]

2 个答案:

答案 0 :(得分:1)

解码后处理数据几乎总是更容易,而不是试图直接操作JSON。

解码文件中的JSON,从所有数组中删除ID元素,然后将更新后的数组的JSON写回文件。

$array = json_decode(file_get_contents("uscf.json"), true);
foreach ($array as &$el) {
    unset($el['ID']);
}
file_put_contents("uscf.json", json_encode($array));

答案 1 :(得分:0)

为了不改变原始数据,我将原始数组映射到一个新数组,并通过array_diff_key()删除ID个键。

$array = json_decode(file_get_contents("uscf.json"), true);
$filter = ['ID' => true]; // only the key is important
$newArray = array_map(function($item) use ($filter) {
    return array_diff_key($item, $filter);
}, $array);

演示〜https://3v4l.org/3nvtA