Home >Backend Development >PHP Tutorial >Notes on array_diff function
array_diff — Calculate the difference of arrays
Description:
array array_diff ( array $array1
, array y $array2
[, array $. ..
] ) Comparison returns values that are in array1
but not in array2
or any other parameter array. Note that the key names remain unchanged.
Note: This function only checks one dimension of the multi-dimensional array. If you want to compare deeper dimensions, you need to write another function. Today's work encountered such a need, so I wrote a function to compare deeper dimensions.
<?<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>
The above introduces the precautions for the array_diff function, including the relevant aspects. I hope it will be helpful to friends who are interested in PHP tutorials.