重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
?php
创新互联建站是一家集网站建设,双清企业网站建设,双清品牌网站建设,网站定制,双清网站建设报价,网络营销,网络优化,双清网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
$old_arr = array(
array(1,107,100,83,44,111),
array(100,109,126,86,93,22),
array(10,113,126,86,93,22),
array(100,109,126,86,93,22),
);
$new_arr = array(0,0,0,0,0,0);
foreach($old_arr as $arr){
for ($i = 0; $i 6; $i++) {
$new_arr[$i]+=$arr[$i];
}
}
var_dump($new_arr);
?
截图如下:
遍历一次就搞定了
既然你要把单号相同的加起来,就可以认为单号是唯一的,所以单号可以做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了
// 只要 ID 相同就把值累加吗?
$ary = [
['id' = 1, 'value' = 200],
['id' = 2, 'value' = 200],
['id' = 1, 'value' = 200],
['id' = 2, 'value' = 200],
['id' = 2, 'value' = 200],
['id' = 2, 'value' = 200],
];
$result = [];
foreach($ary as $key = $vo) {
if (!array_key_exists($vo['id'], $result)) {
$result[$vo['id']] = $vo['value'];
} else {
$result[$vo['id']] += $vo['value'];
}
}
echo 'pre';
print_r($result);
echo '/pre';
SELECT SUM(分数) FROM 表a WHERE 性别='男'
SELECT SUM(分数) FROM 表a WHERE 性别='女'
----测试
CREATE TABLE MASK_TEST(
ID INT,
姓名 varchar(20),
性别 varchar(20),
年龄 int,
分数 int
)
INSERT INTO MASK_TEST VALUES(11,'ZHANG SAN','男',20,88)
INSERT INTO MASK_TEST VALUES(11,'LIU SHAN','女',20,83)
INSERT INTO MASK_TEST VALUES(11,'WANG SAN','男',20,87)
INSERT INTO MASK_TEST VALUES(11,'ZHANG TING','女',20,83)
INSERT INTO MASK_TEST VALUES(11,'ZHAO YAN','女',20,88)
INSERT INTO MASK_TEST VALUES(11,'ZHOU HU','男',20,78)
INSERT INTO MASK_TEST VALUES(11,'WANG QIANG','男',20,98)
INSERT INTO MASK_TEST VALUES(11,'LI QIAN','女',21,68)
SELECT SUM(分数) FROM MASK_TEST WHERE 性别='男'
SELECT SUM(分数) FROM MASK_TEST WHERE 性别='女'
----结果:
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
-----------
351
(1 行受影响)
-----------
322
(1 行受影响)