Php array_diff()返回空数组

Php array_diff()返回空数组,php,arrays,Php,Arrays,我有以下两个阵列: 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"

我有以下两个阵列:

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
相应地被转储到这里的第一个和第二个数组

为什么会这样

代码是:

$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));

此函数仅检查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;

您可以使用此

$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;
$result=check_diff_multi($arr1,$arr2);
打印“”;
打印(结果);
打印“”;
函数检查\u diff\u multi($array1,$array2){
$result=array();
foreach($array1作为$key=>$val){
如果(isset($array2[$key])){
if(is_数组($val)&&$array2[$key]){
$result[$key]=检查差异(val,$array2[$key]);
}
}否则{
$result[$key]=$val;
}
}
返回$result;

}

array_diff
-函数只检查n维数组的一维。您的预期输出是什么?预期输出是
$arrOutput=array(数组('foo'=>'Test','bar'=>'Test'),因为它不在第二个数组中,因为您试图在一维数组上使用
数组_diff()
。如果要查看多维数组的回答问题,需要使用上面的链接