最近,在某个项目中写了与数组差集合问题相关的代码
$arr1=[
[
' cardId'=1010284722,
' beforeAmounts'=100,
' afterAmounts'=20,
' diffAmounts'=-80,
' diffStatus'=1
]、
[
' cardId'=1010284722,
' beforeAmounts'=100,
' afterAmounts'=200,
' diffAmounts'=100,
' diffStatus'=0
]、
[
' cardId'=177561410,
' beforeAmounts'=2000,
' afterAmounts'=1000,
' diffAmounts'=-1000,
' diffStatus'=1
]、
[
' cardId'=177561410,
' beforeAmounts'=2000,
' afterAmounts'=1000,
' diffAmounts'=-1000,
' diffStatus'=1
]、
[
' cardId'=1077060068,
' beforeAmounts'=789,
' afterAmounts'=100,
' diffAmounts'=-689,
' diffStatus'=1
]、
[
' cardId'=1077060068,
' beforeAmounts'=789,
' afterAmounts'=100,
' diffAmounts'=-689,
' diffStatus'=1
]
];
$arr2=[
[
' cardId'=177561410,
' beforeAmounts'=2000,
' afterAmounts'=1000,
' diffAmounts'=-1000,
' diffStatus'=1
]、
[
' cardId'=1077060068,
' beforeAmounts'=789,
' afterAmounts'=100,
' diffAmounts'=-689,
' diffStatus'=1
]
];
echo 'arr1个数:'.count($arr1).'
';
echo 'arr1藏品: ';
var_dump($arr1;
echo '
'; echo 'arr2个数:'.count($arr2).'
';
echo 'arr2藏品: ';
var_dump($arr2;
echo '
'; //这是我求差集的方法
Foreach($arr1as$k=$v ) if ) in_array ) $v,$arr2) ) unset ) $arr1[$k] );
echo '差集个数:'.count($arr1).'
';
echo '差集: ';
var_dump($arr1;
因为有重复的数据,所以这样求出后的差集合的个数$arr2的个数不等于$arr1的个数
问:如何寻求差集的才能
差集合个数$arr2的个数=$arr1的个数
最后求出的差集还包括这两个重复的数组元素' cardId'=177561410和' cardId'=1077060068