PHP 循环出来的数组,我现在想进行合并 并且相加。
$new_arr[]=array("new_id"=>$arr[$key][$keys],"new_value"=>$newvalue);在foreach内这个是我定义的...
$new_arr[]=array("new_id"=> $arr[$key][$keys],"new_value"=>$newvalue);
在foreach内这个是我定义的数组,
我在循环外,
var_dump($new_arr); 后 所出现的结果是,
array(4) {
[0]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> float(0.5) }
[1]=> array(2) { ["new_id"]=> string(1) "2" ["new_value"]=> float(0.5) }
[2]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> int(1) }
[3]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> float(0.5) }
[4]=> array(2) { ["new_id"]=> string(1) "6" ["new_value"]=> float(0.5) }
}
我现在想实现的最终结果是这样的:
array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> int(2) }
array(2) { ["new_id"]=> string(1) "2" ["new_value"]=> float(0.5)}
array(2) { ["new_id"]=> string(1) "6" ["new_value"]=> float(0.5)}
// 解释一下: 就是new_id 这一列 把所有 相同的值 合并到一起, 并且 对应的
new_value 这一列进行相加。
希望大家能帮我解答, 今天晚上我会一直在线等。 很急, 谢谢大家了。 展开
在foreach内这个是我定义的数组,
我在循环外,
var_dump($new_arr); 后 所出现的结果是,
array(4) {
[0]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> float(0.5) }
[1]=> array(2) { ["new_id"]=> string(1) "2" ["new_value"]=> float(0.5) }
[2]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> int(1) }
[3]=> array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> float(0.5) }
[4]=> array(2) { ["new_id"]=> string(1) "6" ["new_value"]=> float(0.5) }
}
我现在想实现的最终结果是这样的:
array(2) { ["new_id"]=> string(1) "1" ["new_value"]=> int(2) }
array(2) { ["new_id"]=> string(1) "2" ["new_value"]=> float(0.5)}
array(2) { ["new_id"]=> string(1) "6" ["new_value"]=> float(0.5)}
// 解释一下: 就是new_id 这一列 把所有 相同的值 合并到一起, 并且 对应的
new_value 这一列进行相加。
希望大家能帮我解答, 今天晚上我会一直在线等。 很急, 谢谢大家了。 展开
展开全部
兄弟,不多解释,直接给你贴代码,亲自测试过。
$new = array();
foreach ($arr as $k => $v) {
if (isset($new["{$v['new_id']}"])) {
$new["{$v['new_id']}"] += $v['value'];
} else {
$new["{$v['new_id']}"] = $v['value'];
}
}
$new_arr = array();
$key = 0;
foreach ($new as $k1 => $v1) {
$new_arr[$key]['new_id'] = $k;
$new_arr[$key]['new_value'] = $v1;
$key++;
}
echo '<pre>';
print_r($new_arr);
echo '</pre>';
$new = array();
foreach ($arr as $k => $v) {
if (isset($new["{$v['new_id']}"])) {
$new["{$v['new_id']}"] += $v['value'];
} else {
$new["{$v['new_id']}"] = $v['value'];
}
}
$new_arr = array();
$key = 0;
foreach ($new as $k1 => $v1) {
$new_arr[$key]['new_id'] = $k;
$new_arr[$key]['new_value'] = $v1;
$key++;
}
echo '<pre>';
print_r($new_arr);
echo '</pre>';
2012-06-16 · 知道合伙人互联网行家
关注
展开全部
1楼兄弟怎么不这么写呢?
$new = array();
foreach ($new_arr as $key => $value) {
if(!isset($new[$value['new_id']]['new_id'])) {
$new[$value['new_id']]['new_id'] = $value['new_id'];
$new[$value['new_id']]['new_value'] = $value['new_value'];
}else {
$new[$value['new_id']]['new_value'] += $value['new_value'];
}
}
//var_dump($new);
/*
array(3) { [1]=> array(2) { ["new_id"]=> int(1) ["new_value"]=> float(2) }
[2]=> array(2) { ["new_id"]=> int(2) ["new_value"]=> float(0.5) }
[6]=> array(2) { ["new_id"]=> int(6) ["new_value"]=> float(0.5) }
}
//*/
$new = array();
foreach ($new_arr as $key => $value) {
if(!isset($new[$value['new_id']]['new_id'])) {
$new[$value['new_id']]['new_id'] = $value['new_id'];
$new[$value['new_id']]['new_value'] = $value['new_value'];
}else {
$new[$value['new_id']]['new_value'] += $value['new_value'];
}
}
//var_dump($new);
/*
array(3) { [1]=> array(2) { ["new_id"]=> int(1) ["new_value"]=> float(2) }
[2]=> array(2) { ["new_id"]=> int(2) ["new_value"]=> float(0.5) }
[6]=> array(2) { ["new_id"]=> int(6) ["new_value"]=> float(0.5) }
}
//*/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能不能把arr那个数组发过来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询