下面是两个数组,我想比较并删除相同的值,如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)
我不知道我做错了什么,但我收到的错误是数组无法转换为字符串。谁能帮我这个? 提前致谢
答案 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
的方法是错误的,请检查此解决方案的正确语法。
我希望它有所帮助