通过php在json中搜索和替换
我有一个json,如下所示:通过php在json中搜索和替换,php,json,search,Php,Json,Search,我有一个json,如下所示: {"fav":[{"id":14823},{"id":14817},{"id":14811},{"id":14775}],"scheduled":[{"id":14811},{"id":14817}]} 我想在fav中搜索计划,如果它存在,它将在fav中删除 我想要的结果是: {"fav":[{"id":14823},{"id":14775}],"scheduled":[{"id":14811},{"id":14817}]} 解码JSON后: $data =
{"fav":[{"id":14823},{"id":14817},{"id":14811},{"id":14775}],"scheduled":[{"id":14811},{"id":14817}]}
我想在fav中搜索计划,如果它存在,它将在fav中删除
我想要的结果是:
{"fav":[{"id":14823},{"id":14775}],"scheduled":[{"id":14811},{"id":14817}]}
解码JSON后:
$data = json_decode($json, true);
您可以使用array_diff删除fav
中也在计划中的值
$fav = array_values(array_diff(
array_column($data['fav'], 'id'),
array_column($data['scheduled'], 'id')));
(由于array_diff
将保留键,因此需要array_值
,并且需要顺序零索引键才能重新编码到JSON以正常工作。)
然后将这些值映射回{id:value}
格式,并将结果重新分配给$data['fav']
$data['fav'] = array_map(function($item){ return ['id' => $item]; }, $fav);
然后,很明显,重新编码为JSON
$json = json_encode($data);
如果你能找到解决办法,请帮助我。谢谢!使用json_decode以整洁的格式进行解码,然后比较数组的值。退房: