最近在寫(xiě)一個(gè)項(xiàng)目 項(xiàng)目中 涉及到數(shù)組差集問(wèn)題 代碼如下
<?php
$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個(gè)數(shù):'.count($arr1).'<br /><br />';
echo 'arr1集合: ';
var_dump($arr1);
echo '<hr />';
echo 'arr2個(gè)數(shù):'.count($arr2).'<br /><br />';
echo 'arr2集合: ';
var_dump($arr2);
echo '<hr />';
//這是我求差集的方法
foreach($arr1 as $k=>$v) if(in_array($v, $arr2)) unset($arr1[$k]);
echo '差集個(gè)數(shù):'.count($arr1).'<br /><br />';
echo '差集集合:';
var_dump($arr1);
因?yàn)橛兄貜?fù)的數(shù)據(jù) 這樣求出來(lái)之后 差集的個(gè)數(shù) + $arr2 的個(gè)數(shù) 不等于 $arr1 的個(gè)數(shù)
問(wèn) : 怎么樣求差集才能
差集的個(gè)數(shù) + $arr2 的個(gè)數(shù) = $arr1 的個(gè)數(shù)
而且最后求出的差集 集合也包含那兩個(gè)重復(fù)的數(shù)組元素 "cardId" => 177561410 和 "cardId" => 1077060068
php數(shù)組求差集問(wèn)題
慕尼黑8549860
2019-03-14 16:13:11