array_diff_assoc和array_diff之间的区别
相同点:array_diff_assoc和array_diff均只包含仅仅出现在$array1中的数组元素
不同点:array_diff_assoc比较的时候,会同时比较数组对应的key是否相同,而array_diff不比较key
如果要实现真正意义上的两个数组差异比较,见后边网友提供的arr_diff()函数,用递归方式实现
详细见代码说明:
<?php
$array1 = array (”a” => “green”, “b” => “brown”, “c” => “blue”, “red”,’d'=>’good’);
$array2 = array (”a” => “green”, “yellow”, “red”,’good’);
$result_assoc = array_diff_assoc($array1, $array2);
$result_diff = array_diff($array1, $array2);
echo “array1=\r\n”;
print_r($array1);
echo “\r\narray2=\r\n”;
print_r($array2);
echo “\r\n\r\n”;
print_r($result_assoc);
echo “\r\narray_diff:\r\n”;
print_r($result_diff);
?>
结果:
array1=
Array
(
[a] => green
=> brown
[c] => blue
[0] => red
[d] => good
)
array2=
Array
(
[a] => green
[0] => yellow
[1] => red
[2] => good
)
Array
(
=> brown
[c] => blue
[0] => red
[d] => good
)
array_diff:
Array
(
=> brown
[c] => blue
)
附ottodenn at gmail dot com写的函数:
<?php
function arr_diff($a1,$a2){
$ar = array();
foreach ($a2 as $k => $v) {
if (!is_array($v)) {
if ($v !== $a1[$k])
$ar[$k] = $v;
}else{
if ($arr = arr_diff($a1[$k], $a2[$k]))
$ar[$k] = $arr;
}
}
return $ar;
}
// example:
$arr1 = array(
‘user1′ => array(
‘name’ => ‘john d.’,
’street’ => ‘elmstreet no. 2′,
‘city’ => ‘berlin’
),
‘user2′ => array(
‘name’ => ‘harald c.’,
’street’ => ‘b-street no. 7′,
‘city’ => ‘cologne’
)
);
$arr2 = array(
‘user1′ => array(
‘name’ => ‘john b.’, // change #1
’street’ => ‘elmstreet no. 2′,
‘city’ => ‘berlin’
),
‘user2′ => array(
‘name’ => ‘harald c.’,
’street’ => ‘b-street no. 7′,
‘city’ => ‘bavaria’ // change #2
)
);
print_r(arr_diff($arr1, $arr2));
/*
will output:
Array
(
[user1] => Array
(
[name] => john b.
)
[user2] => Array
(
[city] => bavaria
)
)
*/
?>
cool I like it.
Let us wait and see and hope for the best.
I see Good Times ahead!!
Looking forward to “Writing – II”!
What a refreshing post!!!
history again.
have a deeper meaning.
i just read your marvelous tale! fantastic!