我有以下两个数组:
array(1) { [0]=> array(2) { ["foo"]=> string(4) "Test" ["bar"]=> string(18) "Test" } }
array(3) { [0]=> array(2) { ["foo"]=> string(3) "295" ["bar"]=> string(1) "9" } [1]=> array(2) { ["foo"]=> string(7) something" ["bar"]=> string(17) "something else" } [2]=> array(2) { ["foo"]=> string(5) "Test2" ["bar"]=> string(19) "Test2" } }
array_diff($arr1, $arr2);
返回空数组,其中$arr1
和$arr2
因此第一个和第二个数组var转储到这里。
为什么会这样?
代码是:
$arr1 = array(
array('foo' => 'Test', 'bar' => 'Test')
);
$arr2 = array(
array('foo' => '295', 'bar' => '9'),
array('foo' => 'something', 'bar' => 'else'),
array('foo' => 'Test2', 'bar' => 'Test2')
);
var_dump(array_diff($arr1, $arr2));
答案 0 :(得分:0)
此函数仅检查n维数组的一维。
您可以尝试其他方式,例如 -
$op= [];
foreach($arr2 as $array) {
$check = array_diff($arr1[0], $array);
$op[]= $check;
}
$op= array_filter($op);
$op = (count($op) === count($arr2)) ? $arr1 : null;
答案 1 :(得分:0)
您可以使用此
$result = check_diff_multi($arr1, $arr2);
print '<pre>';
print_r($result);
print '</pre>';
function check_diff_multi($array1, $array2){
$result = array();
foreach($array1 as $key => $val) {
if(isset($array2[$key])){
if(is_array($val) && $array2[$key]){
$result[$key] = check_diff_multi($val, $array2[$key]);
}
} else {
$result[$key] = $val;
}
}
return $result;
}