为了账号安全,请及时绑定邮箱和手机立即绑定

php判断数组重复,并把重复的数据相加?

php判断数组重复,并把重复的数据相加?

PHP
拉莫斯之舞 2019-05-09 11:07:55
php判断数组重复,并把重复的数据相加
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

遍历一次就搞定了

既然你要把单号相同的加起来,就可以认为单号是唯一的,所以单号可以做key

123456789$sourceArr array();  // 这里就是你原始数据的数组$newArr array();  // 这里是相加后处理过的数组,以单号为keyforeach ($sourceArr as $v) {    if (array_key_exists($v['id'], $newArr)) {        $newArr[$v['id']]['fund'] += $v['fund'];    else {        $newArr[$v['id']] = $v;    }}

大概就是这么个意思,不过交易类型、账务类型你可能还要再处理下。

如果最后想得到一个下标从0开始的,非关联数组,再用array_values()函数处理下就OK了


查看完整回答
1 反对 回复 2019-05-13
?
MMTTMM

TA贡献1869条经验 获得超4个赞

(1)利用php提供的函数,array_unique和array_diff_assoc来实现

.代码如下:

<?php
function FetchRepeatMemberInArray($array) {
// 获取去掉重复数据的数组
$unique_arr = array_unique ( $array );
// 获取重复数据的数组
$repeat_arr = array_diff_assoc ( $array, $unique_arr );
return $repeat_arr;
}

// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>

(2)自己写函数实现这个功能,利用两次for循环

.代码如下:

<?php
function FetchRepeatMemberInArray($array) {
$len = count ( $array );
for($i = 0; $i < $len; $i ++) {
for($j = $i + 1; $j < $len; $j ++) {
if ($array [$i] == $array [$j]) {
$repeat_arr [] = $array [$i];
break;
}
}
}
return $repeat_arr;
}

// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>



查看完整回答
反对 回复 2019-05-13
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这个函数就可以array_unique()
array_unique() 函数移除数组中的重复的值,并返回结果数组。
当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。
返回的数组中键名不变。
<?php
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
print_r(array_unique($a));
?>

输出:
Array ( [a] => Cat [b] => Dog )

查看完整回答
反对 回复 2019-05-13
  • 3 回答
  • 0 关注
  • 1698 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号