array_diff函数的注意事项
array_diff — 计算数组的差集
说明:
array array_diff ( array $array1 , array $array2 [, array $... ] ) 对⽐返回在array1中但是不在array2及任何其它参数数组中的值。注意键名保留不变。
注意:本函数只检查了多维数组中的⼀维。如果想⽐较更深的维度需要另写⼀个函数,今天的⼯作就遇到了这样的需求,所以写了⼀个函数来⽐较更深的维度。
<?php
header("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_colo $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_colo $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)) { //这个位置进⾏优化:判断!empty($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 '<pre>';
var_dump($result);
if(empty($result)){
diff函数echo '完全相同';
}else{
echo '完全不相同';
}
如果您阅读过此⽂章有所收获,请为我顶⼀个,如果⽂章中有错误的地⽅,欢迎指出。
相互学习,共同进步!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论