我在使用array_diff_assoc时遇到了问题,因为结果不对。我在$ diff中获得了键[3],但它存在于$ c1和$ c2中,所以$ diff中的结果没有意义,因为我使用{{1} }。我应该从$ c2获得key [0]以及来自$ diff的其他两个键[1]和[2]是正确的。
Query1导致此数组$ c2
array_diff_assoc()
查询2导致此数组$ c1
Array([0] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 22
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 135
[CRITICO] => 1)
[1] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 121
[CRITICO] => 1)
[2] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 123
[CRITICO] => 1)
[3] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 125
[CRITICO] => 1))
然后我使用Array([0] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 125
[CRITICO] => 1))
,我在数组$ diff中获得结果。
$diff=array_diff_assoc($c2,$c1);
编辑:我尝试使用Array([1] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 121
[CRITICO] => 1)
[2] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 123
[CRITICO] => 1)
[3] => Array
([PROCESSO] => 1614436
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 125
[CRITICO] => 1))
和php.net示例中的以下函数,但它返回与$diff=array_udiff_assoc($c2,$c1, array("cr", "comp_func_cr"));
相同的内容。
array_diff_assoc
答案 0 :(得分:1)
扩展上一个答案:
function array2D_diff( $c1, $c2 )
{
$c3 = Array();
foreach($c2 as $key=>$v)
{
if(!in_array($v, $c1))
{
$c3[] = $v;
}
}
foreach($c1 as $key=>$v)
{
if(!in_array($v, $c2))
{
$c3[] = $v;
}
}
return $c3;
}
print_r(array2D_diff( $c2, $c1 ));
无论传递$ c2和$ c1的顺序如何,这都会有效。
答案 1 :(得分:1)
尝试以下
<?php
foreach($c2 as $key=>$v1){
if(in_array($v1, $c1)){
unset($c2[$key]);
}
}
print_r($c2);
?>
或者您可以创建一个函数并使用它示例:
<?php
function array_defference($a1,$a2){
if(sizeof($a1) >= sizeof($a2)){
$large = $a1;
$small = $a2;
}else{
$large = $a2;
$small = $a1;
}
foreach($large as $key=>$v1){
if(in_array($v1, $small)){
unset($large[$key]);
}
}
return $large;
}
$reuslt = array_defference($c2,$c1);
print_r($reuslt);
?>
答案 2 :(得分:0)
array_diff_assoc(array1,array2)
将array1与array2进行比较并返回差异。与array_diff()不同,数组键也用于比较。它实际上与您的数组键进行比较,因此结果就像您的豪宅。在您的情况下,您需要使用它
array_udiff_assoc($c2,$c1)
。
使用附加索引检查计算数组的差异,通过回调函数比较数据。