Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php在json中搜索和替换_Php_Json_Search - Fatal编程技术网

通过php在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 =

我有一个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 = 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以整洁的格式进行解码,然后比较数组的值。退房: