【发布时间】:2023-03-19 01:40:01
【问题描述】:
我想比较2个json,如果有新数组,它将获取新数组并将其插入数据库。
这是旧的json,
[{"menu_id":"1","menu_name":"Rapat 2018","parent_id":"0","link":"informent.online","status":"1"},
{"menu_id":"3","menu_name":"Rapat 2019","parent_id":"0","link":"#","status":"1"}]
这是新的 json,
[{"menu_id":"1","menu_name":"Rapat 2018","parent_id":"0","link":"informent.online","status":"1","children":[{"menu_id":"","menu_name":"Rapat RW","parent_id":"1","link":"#","status":"1"}]},
{"menu_id":"3","menu_name":"Rapat 2019","parent_id":"0","link":"#","status":"1"}]
有来自子项的新数组(menu_name : Rapat RW),我想获取那个新数组,以便将其插入数据库。
这就是我所做的,
$json_str1 = ' [
{
"menu_id": "1",
"menu_name": "Rapat 2018",
"parent_id": "0",
"link": "informent.online",
"status": "1"
},
{
"menu_id": "3",
"menu_name": "Rapat 2019",
"parent_id": "0",
"link": "#",
"status": "1"
}
]';
$json_str2 = ' [
{
"menu_id": "1",
"menu_name": "Rapat 2018",
"parent_id": "0",
"link": "informent.online",
"status": "1",
"children": [
{
"menu_id": "",
"menu_name": "Rapat RW",
"parent_id": "1",
"link": "#",
"status": "1"
}
]
},
{
"menu_id": "3",
"menu_name": "Rapat 2019",
"parent_id": "0",
"link": "#",
"status": "1"
}
]';
list($arr1, $arr2) = [json_decode($json_str1), json_decode($json_str2)];
$common_items = array_intersect($arr2, $arr1);
$result = array_filter(array_merge($arr1, $arr2), function($v) use($common_items){
return !in_array($v, $common_items);
});
print_r($result);
但我从“函数:array_intersect”返回错误“stdClass 类的对象无法转换为字符串” 问题是什么? 任何帮助将不胜感激!
【问题讨论】:
-
请发布您迄今为止尝试过的内容以及对此无效的内容。 Stackoverflow 不是代码编写服务,而是帮助您解决具体问题的平台。请参考:stackoverflow.com/help/how-to-ask
-
解码json,然后检查
children是否存在?如果存在,则仅比较新旧数据的子项,并基于该获取新数组,您最终必须将其插入到数据库中 -
[json_decode($json_str1), json_decode($json_str2)]必须是[json_decode($json_str1,true), json_decode($json_str2,true)] -
现在它返回“数组到字符串的转换”
-
这确实发生在其他地方,它在你的代码中看不到数组到字符串,你有更多相关的代码吗?