php 中的数组比较只得到差异

Array comparision in php to get only difference

下面是两个数组,我想比较并删除相同的值,例如 array_diff() 函数,我想将结果存储在第三个数组中

$array1 = Array([0] => Array([a] => XYZ,[b] => ABC))
$array2 = Array([0] => Array([a] => XYZ,[b] => ABC),[1] => Array([a] => PQR,[b] => XYZ))
$array3 = array_diff($array1,$array2);
//$array3 value must return this value Array([1] => Array[a]=> PQR,[b] => XYZ)

我不知道我做错了什么,但我收到错误消息,无法将数组转换为字符串。谁能帮我这个? 提前致谢

如果您确定 $array2 将始终包含比 $array1 更多的元素,那么这是您的解决方案:

$array1 = array(array('a' => 'XYZ','b' => 'ABC'));
$array2 = array(array('a' => 'XYZ','b' => 'ABC'),array('a' => 'PQR','b' => 'XYZ'));
$limit = count($array2);
$array3 = array();
for($i=0;$i<$limit;$i++){
  if(empty($array1[$i]))
    $array3[] = $array2[$i];

  $array3[] = array_diff($array1[$i],$array2[$i]);
}
foreach($array3 as $k=>$a3){
  if(empty($a3)||($a3===NULL))
    continue;
  $result[$k] = $a3;
}
var_dump($result); //array(1) { [1]=> array(2) { ["a"]=> string(3) "PQR" ["b"]=> string(3) "XYZ" } }

请注意,array_diff 适用于一维数组,而您提供的是二维数组作为参数,这就是它不起作用的原因。

您定义 $array1$array2 的方式也是错误的,请检查此解决方案的语法是否正确。

希望对你有帮助