array_diff — 计算数组的差集
说明:
array array_diff ( array $array1 , array $array2 [, array $... ] )对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。注意键名保留不变。
注意:本函数只检查了多维数组中的一维。如果想比较更深的维度需要另写一个函数,今天的工作就遇到了这样的需求,所以写了一个函数来比较更深的维度。
phpheader(content-type:text/html;charset=utf-8);$json1='{ 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 } } ] } ] }';$json2='{ 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 } } ] } ] }';$array1=json_decode($json1,true);$array2=json_decode($json2,true);function array_recursive_diff($array1, $array2) { $result = array(); foreach ($array1as$key1 => $value1) { if (array_key_exists($key1, $array2)) { if (is_array($value1)) { $diff = array_recursive_diff($value1, $array2[$key1]); if (count($diff)) { $result[$key1] = $diff; } } else { if ($value1 != $array2[$key1]) { $result[$key1] = $value1; } } } else { $result[$key1] = $value1; } } return$result;}$result=array_recursive_diff($array1, $array2);echo '';var_dump($result);if(empty($result)){ echo '完全相同';}else{ echo '完全不相同';}
以上就介绍了array_diff函数的注意事项,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。