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

时间:2016-11-09 08:43:45

标签: php arrays multidimensional-array array-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)

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

1 个答案:

答案 0 :(得分:0)

如果您确定$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适用于一维数组,并且您提供2D数组作为参数,这就是它无法正常工作的原因。

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

我希望它有所帮助