array_diff — 배열의 차이 계산
설명:
array array_diff ( array $array1
, array $array2
[, array $...
] ) 비교는 array1
에 반환되지만 array2
또는 다른 매개변수 배열에 없는 값입니다. 키 이름은 변경되지 않습니다.
참고: 이 함수는 다차원 배열의 한 차원만 확인합니다. 더 깊은 차원을 비교하려면 다른 함수를 작성해야 합니다. 오늘의 작업에서는 그러한 요구가 발생하여 더 깊은 차원을 비교하는 함수를 작성했습니다.
<?<span>php </span><span>header</span>("Content-type:text/html;charset=utf-8"<span>); </span><span>$json1</span>='{ "filedir":"default", "pages" : [ { "name" : "首页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } }, { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"广告", "blocktype":"ad", "settings":{ "is_show":true, "number":5, "show_type":"scroll" } }, { "name":"菜单", "blocktype":"menu", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"个人中心", "blocktype":"personal_center", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"上网按钮", "blocktype":"online_button", "settings":{ "is_show":true, "offline_bg_url":"", "online_bg_url":"" } } ] }, { "name" : "登录页", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":true, "bg_url":"", "bg_color":"" } }, { "name":"logo图", "blocktype":"logo", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"登录模块", "blocktype":"login", "settings":{ "is_show":true, "success_url":"" } } ] }, { "name" : "认证过程页", "duration":"5", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":false, "bg_url":"" } }, { "name":"登录动画", "blocktype":"login_animate", "settings":{ "is_show":true, "bg_url":"" } } ] }, { "name" : "登录成功页", "blocks":[ { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"成功页app", "blocktype":"apps", "settings":{ "is_show":true } }, { "name":"成功页提示信息", "blocktype":"success_tips", "settings":{ "is_show":false, "color":"#fff", "content":"" } } ] }, { "name" : "广告细览页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } } ] } ] }'<span>; </span><span>$json2</span>='{ "filedir":"default", "pages" : [ { "name" : "首页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } }, { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"广告", "blocktype":"ad", "settings":{ "is_show":true, "number":5, "show_type":"scroll" } }, { "name":"菜单", "blocktype":"menu", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"个人中心", "blocktype":"personal_center", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"上网按钮", "blocktype":"online_button", "settings":{ "is_show":true, "offline_bg_url":"", "online_bg_url":"" } } ] }, { "name" : "登录页", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":true, "bg_url":"", "bg_color":"" } }, { "name":"logo图", "blocktype":"logo", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"登录模块", "blocktype":"login", "settings":{ "is_show":true, "success_url":"" } } ] }, { "name" : "认证过程页", "duration":"5", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":false, "bg_url":"" } }, { "name":"登录动画", "blocktype":"login_animate", "settings":{ "is_show":true, "bg_url":"" } } ] }, { "name" : "登录成功页", "blocks":[ { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"成功页app", "blocktype":"apps", "settings":{ "is_show":true } }, { "name":"成功页提示信息", "blocktype":"success_tips", "settings":{ "is_show":false, "color":"#fff", "content":"" } } ] }, { "name" : "广告细览页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } } ] } ] }'<span>; </span><span>$array1</span>=json_decode(<span>$json1</span>,<span>true</span><span>); </span><span>$array2</span>=json_decode(<span>$json2</span>,<span>true</span><span>); </span><span>function</span> array_recursive_diff(<span>$array1</span>, <span>$array2</span><span>) { </span><span>$result</span> = <span>array</span><span>(); </span><span>foreach</span> (<span>$array1</span><span>as</span><span>$key1</span> => <span>$value1</span><span>) { </span><span>if</span> (<span>array_key_exists</span>(<span>$key1</span>, <span>$array2</span><span>)) { </span><span>if</span> (<span>is_array</span>(<span>$value1</span><span>)) { </span><span>$diff</span> = array_recursive_diff(<span>$value1</span>, <span>$array2</span>[<span>$key1</span><span>]); </span><span>if</span> (<span>count</span>(<span>$diff</span><span>)) { </span><span>$result</span>[<span>$key1</span>] = <span>$diff</span><span>; } } </span><span>else</span><span> { </span><span>if</span> (<span>$value1</span> != <span>$array2</span>[<span>$key1</span><span>]) { </span><span>$result</span>[<span>$key1</span>] = <span>$value1</span><span>; } } } </span><span>else</span><span> { </span><span>$result</span>[<span>$key1</span>] = <span>$value1</span><span>; } } </span><span>return</span><span>$result</span><span>; } </span><span>$result</span>=array_recursive_diff(<span>$array1</span>, <span>$array2</span><span>); </span><span>echo</span> '<pre class="brush:php;toolbar:false">'<span>; </span><span>var_dump</span>(<span>$result</span><span>); </span><span>if</span>(<span>empty</span>(<span>$result</span><span>)){ </span><span>echo</span> '完全相同'<span>; }</span><span>else</span><span>{ </span><span>echo</span> '完全不相同'<span>; }</span>
위 내용은 관련 내용을 포함하여 array_diff 함수의 주의사항을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.