复杂的数组处理,寻求帮助 本帖最后由 KindHacker 于 2011-08-26 12:19:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 麻烦把函数给写一下吧 funciont convertArray($originArray){ ...... return $targetArray;} $ar = Array( 0 => Array ( 'AAA' =>'', 'BBB' => 0 ), 1 => Array ( 'AAA' => 'e', 'BBB' => 20 ), 2 => Array ( 'AAA' => 'f', 'BBB' => 10 ), 3 => Array ( 'AAA' => 'e', 'BBB' => 80 ), 4 => Array ( 'AAA' => 'f', 'BBB' => 50 ));$tmp = array();foreach($ar as $v) { if (strlen($v['AAA']) > 0) { if (isset($tmp[$v['AAA']])) $tmp[$v['AAA']] += $v['BBB']; else $tmp[$v['AAA']] = $v['BBB']; }}$result = array();foreach($tmp as $k => $v) $result[] = array('AAA' => $k, 'BBB' => $v);echo '<pre>';print_r($result);/*Array( [0] => Array ( [AAA] => e [BBB] => 100 ) [1] => Array ( [AAA] => f [BBB] => 60 ))*/ //写成函数function convertArray($ar) { $tmp = array(); $result = array(); foreach($ar as $v) { if (strlen($v['AAA']) > 0) isset($tmp[$v['AAA']]) ? $tmp[$v['AAA']] += $v['BBB'] : $tmp[$v['AAA']] = $v['BBB']; } foreach($tmp as $k => $v) $result[] = array('AAA' => $k, 'BBB' => $v); return $result;} $arr=array( 0 => array ( 'AAA' =>'', 'BBB' => 0 ), 1 => array ( 'AAA' => 'e', 'BBB' => 20 ), 2 => array ( 'AAA' => 'f', 'BBB' => 10 ), 3 => array ( 'AAA' => 'e', 'BBB' => 80 ), 4 => array ( 'AAA' => 'f', 'BBB' => 50 ));foreach($arr as $vl){ if($vl[AAA]) $ar[]=$vl; }//print_r($ar);foreach($ar as $v){ if(!$tmp[$v[AAA]]){ $tmp[$v[AAA]]=$v; }else{ $tmp[$v[AAA]][BBB]+=$v[BBB]; } }print_r(array_values($tmp)); 我自己实现了一种我更需要的答案funciont convertArray($originArray){ $targetArray = array(); foreach($originArray as $temp){ if($temp['AAA'] != ''){ if(!isset($targetArray[$temp['AAA']])){ $targetArray[$temp['AAA']] = 0; } $targetArray [$temp['AAA']] += $temp['BBB']; } } return $targetArray;}结果是Array( [e] => 100 [f] => 60)其实这才是我最终要的结果 我自己实现了一种我更需要的答案funciont convertArray($originArray){ $targetArray = array(); foreach($originArray as $temp){ if($temp['AAA'] != ''){ if(!isset($targetArray[$temp['AAA']])){ $targetArray[$temp['AAA']] = 0; } $targetArray [$temp['AAA']] += $temp['BBB']; } } return $targetArray;}结果是Array( [e] => 100 [f] => 60)其实这才是我最终要的结果 //function convertArray($ar) { $tmp = array(); foreach($ar as $v) if (strlen($v['AAA']) > 0) isset($tmp[$v['AAA']]) ? $tmp[$v['AAA']] += $v['BBB'] : $tmp[$v['AAA']] = $v['BBB']; return $tmp;} 新手!!!求 php登陆时跳转页面 php存储数据 PHP更新Access的问题 得到脚本名字怎么弄啊? php如何做日志记录? $_SERVER['SERVER_NAME']应该是当前的服务器域名吧?为什么我这里显示localhost? php调用mssql的存储过程无法同时返回输出参数和结果集??请教!!! 用PHP访问sql 2000 server 数据库 northwind 的存储过程 如何判断一个文件是否为图片文件? flush()为什么不能用? preg_replace去空行的问题 有没有哪种sql语句能获取到某条件下的上一条跟下一条数据
......
return $targetArray;
}
(
0 => Array
(
'AAA' =>'',
'BBB' => 0
), 1 => Array
(
'AAA' => 'e',
'BBB' => 20
),
2 => Array
(
'AAA' => 'f',
'BBB' => 10
),
3 => Array
(
'AAA' => 'e',
'BBB' => 80
),
4 => Array
(
'AAA' => 'f',
'BBB' => 50
)
);$tmp = array();
foreach($ar as $v) {
if (strlen($v['AAA']) > 0) {
if (isset($tmp[$v['AAA']])) $tmp[$v['AAA']] += $v['BBB'];
else $tmp[$v['AAA']] = $v['BBB'];
}
}
$result = array();
foreach($tmp as $k => $v) $result[] = array('AAA' => $k, 'BBB' => $v);
echo '<pre>';
print_r($result);/*
Array
(
[0] => Array
(
[AAA] => e
[BBB] => 100
)
[1] => Array
(
[AAA] => f
[BBB] => 60
)
)
*/
function convertArray($ar) {
$tmp = array();
$result = array();
foreach($ar as $v) {
if (strlen($v['AAA']) > 0) isset($tmp[$v['AAA']]) ? $tmp[$v['AAA']] += $v['BBB'] : $tmp[$v['AAA']] = $v['BBB'];
}
foreach($tmp as $k => $v) $result[] = array('AAA' => $k, 'BBB' => $v);
return $result;
}
$arr=array
(
0 => array
(
'AAA' =>'',
'BBB' => 0
), 1 => array
(
'AAA' => 'e',
'BBB' => 20
),
2 => array
(
'AAA' => 'f',
'BBB' => 10
),
3 => array
(
'AAA' => 'e',
'BBB' => 80
),
4 => array
(
'AAA' => 'f',
'BBB' => 50
)
);foreach($arr as $vl){
if($vl[AAA]) $ar[]=$vl;
}
//print_r($ar);
foreach($ar as $v){
if(!$tmp[$v[AAA]]){
$tmp[$v[AAA]]=$v;
}else{
$tmp[$v[AAA]][BBB]+=$v[BBB];
}
}
print_r(array_values($tmp));
funciont convertArray($originArray){
$targetArray = array();
foreach($originArray as $temp){
if($temp['AAA'] != ''){
if(!isset($targetArray[$temp['AAA']])){
$targetArray[$temp['AAA']] = 0;
}
$targetArray [$temp['AAA']] += $temp['BBB'];
}
}
return $targetArray;
}结果是
Array
(
[e] => 100
[f] => 60
)其实这才是我最终要的结果
我自己实现了一种我更需要的答案
funciont convertArray($originArray){
$targetArray = array();
foreach($originArray as $temp){
if($temp['AAA'] != ''){
if(!isset($targetArray[$temp['AAA']])){
$targetArray[$temp['AAA']] = 0;
}
$targetArray [$temp['AAA']] += $temp['BBB'];
}
}
return $targetArray;
}结果是
Array
(
[e] => 100
[f] => 60
)其实这才是我最终要的结果
function convertArray($ar) {
$tmp = array();
foreach($ar as $v) if (strlen($v['AAA']) > 0) isset($tmp[$v['AAA']]) ? $tmp[$v['AAA']] += $v['BBB'] : $tmp[$v['AAA']] = $v['BBB'];
return $tmp;
}