php判断数组重复,并把重复的数据相加
已经读取了表格并且存放二维数组里面了,现在想要把里面重复的数据合并成一条,并把多余的相加,如图就是把相同的票号后面的金额相加,放在一条票号里面,求高手指点...
已经读取了表格并且存放二维数组里面了,现在想要把里面重复的数据合并成一条,并把多余的相加,如图
就是把相同的票号后面的金额相加,放在一条票号里面,求高手指点 展开
就是把相同的票号后面的金额相加,放在一条票号里面,求高手指点 展开
3个回答
展开全部
遍历一次就搞定了
既然你要把单号相同的加起来,就可以认为单号是唯一的,所以单号可以做key
$sourceArr = array(); // 这里就是你原始数据的数组
$newArr = array(); // 这里是相加后处理过的数组,以单号为key
foreach ($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)利用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 );
?>
.代码如下:
<?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 );
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询