php多维数组问题,求大神解决谢谢

$arr = array arrayid=>7363,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7412,fd=>1,fb=>0,tcp=>1,fbdh=>1,jxs=>GZYX, arrayid=>7512,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7516,fd=>1,fb=>0,tcp=>1,fbdh=>0,jxs=>BJCJ,
;

意思就是数组里面jxs 相同 他们的fd,fb,tcp,fbdh相加
如何把上面数组变成下面的结果
结果:
GZYX 3 2 1 3
BJCJ 1 0 1 0

/* 初始化操作数组 */
$arr = array arrayid=>7363,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7412,fd=>1,fb=>0,tcp=>1,fbdh=>1,jxs=>GZYX, arrayid=>7512,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7516,fd=>1,fb=>0,tcp=>1,fbdh=>0,jxs=>BJCJ,
;
$res = array; /*其实我不会告诉你我不用循环用array_walk只是为了显得高大上而已*/
array_walk$arr, function$item,$key use &$res { /* 判断数组是否存在进行初始化 */ $member = &$res[$item[jxs]]; if!isset$member { $member = arrayfd=>0,fb=>0,tcp=>0,fbdh=>0; } /*将统计结果加上可以用array_walk*/ $member[fd] += $item[fd]; $member[fb] += $item[fb]; $member[tcp] += $item[tcp]; $member[fbdh] += $item[fbdh];
}; /*打印结果*/
array_walk$res, function$item, $key { echo "$key {$item[fd]} {$item[fb]} {$item[tcp]} {$item[fbdh]}<br/>";
};
/* *GZYX 3 2 1 3 *BJCJ 1 0 1 0 */

因为你就给了一个数据,我也不知道这个是不是题主的意思,不过好歹是得到了你要的格式了。不过真的很想吐槽,你这题估计没多少人能看出你到底要干什么吧?


我努力打的代码连看都不看么,就只是按照我的要求多加了一组数据而已?实测加了一组也是可以的,还是说我的代码没有解决你的问题?什么话都不说真是莫大的侮辱,哎!

果然逼格太高是不好的,还是默默的改成循环吧T_T。

/* 初始化操作数组 */
$arr = array arrayid=>7363,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7412,fd=>1,fb=>0,tcp=>1,fbdh=>1,jxs=>GZYX, arrayid=>7512,fd=>1,fb=>1,tcp=>0,fbdh=>1,jxs=>GZYX, arrayid=>7516,fd=>1,fb=>0,tcp=>1,fbdh=>0,jxs=>BJCJ,
;
$res = array; /*其实我不会告诉你我不用循环用array_walk只是为了显得高大上而已*/
foreach$arr as $item { /* 判断数组是否存在进行初始化 */ $member = &$res[$item[jxs]]; if!isset$member { $member = arrayfd=>0,fb=>0,tcp=>0,fbdh=>0; } /*将统计结果加上可以用array_walk*/ $member[fd] += $item[fd]; $member[fb] += $item[fb]; $member[tcp] += $item[tcp]; $member[fbdh] += $item[fbdh];
} /*打印结果*/
foreach$res as $key => $item { echo "$key {$item[fd]} {$item[fb]} {$item[tcp]} {$item[fbdh]}<br/>";
}
/* *GZYX 3 2 1 3 *BJCJ 1 0 1 0 */

发表评论

电子邮件地址不会被公开。 必填项已用*标注