本帖最后由 myths621 于 2013-03-19 12:04:11 编辑 首次发帖,请假高手
我从redis中取出五维数组需要处理相加,如下
<br />$a = array(<br /> <br /> 0 => array(<br /><br /> 0=> array(<br /> <br /> "date" => "201201",<br /> "area"=> array(<br /> 12 => array(<br /> click => "3",<br /> traffic => "30"<br /> ) <br /> )<br /> ), <br /><br /> 1=> array(<br /> <br /> "date" => "201202",<br /> "area"=> array(<br /> 12 => array(<br /> click => "8",<br /> traffic => "40"<br /> ),<br /> 8=> array(<br /> click => "5",<br /> traffic => "50"<br /> )<br /> )<br /> ) <br /> <br /> ),<br /><br /> 1 => array(<br /> <br /> 0=> array(<br /> <br /> "date" => "201201",<br /> "area"=> array(<br /> 12 => array(<br /> click => "9",<br /> traffic => "20"<br /> ),<br /> 8=> array(<br /> click => "6",<br /> traffic => "60"<br /> )<br /> )<br /> ),<br /> <br /> 1=> array(<br /> <br /> "date" => "201202",<br /> "area" => NULL<br /> )<br /> ),<br /> <br /> <br /> );<br /><br />
希望数据处理后,相同date前提下,area里相同的key所对应的click和traffic值相加,即0和1这两个大数组,date为201001的,area中12所对应的click和traffic处理后应该是12和50,8对应的是6和60,其他类推,求遍历或其他能处理成功的方法,感激不尽~!
多维数组 ------解决方案--------------------最后结果是怎么样的? 贴一下。
------解决方案--------------------$t = array();<br />foreach ($a as $k=>$v)<br />{<br /> foreach ($v as $k1=>$v1)<br /> {<br /> $t[0][$k1]['date'] = $v1['date'];<br /> foreach ($v1['area'] as $k2=>$v2)<br /> {<br /> $t[0][$k1]['area'][$k2]['click'] += $v2['click'];<br /> $t[0][$k1]['area'][$k2]['traffic'] += $v2['traffic'];<br /> }<br /> }<br />}<br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($t);<br />echo "<pre class="brush:php;toolbar:false">";
结果如下:
<br>Array<br>(<br> [0] => Array<br> (<br> [0] => Array<br> (<br> [date] => 201201<br> [area] => Array<br> (<br> [12] => Array<br> (<br> [click] => 12<div class="clear">
</div>