首次发帖,请假高手
我从redis中取出五维数组需要处理相加,如下
$a = array( 0 => array( 0=> array( "date" => "201201", "area"=> array( 12 => array( click => "3", traffic => "30" ) ) ), 1=> array( "date" => "201202", "area"=> array( 12 => array( click => "8", traffic => "40" ), 8=> array( click => "5", traffic => "50" ) ) ) ), 1 => array( 0=> array( "date" => "201201", "area"=> array( 12 => array( click => "9", traffic => "20" ), 8=> array( click => "6", traffic => "60" ) ) ), 1=> array( "date" => "201202", "area" => NULL ) ), );
希望数据处理后,相同date前提下,area里相同的key所对应的click和traffic值相加,即0和1这两个大数组,date为201001的,area中12所对应的click和traffic处理后应该是12和50,8对应的是6和60,其他类推,求遍历或其他能处理成功的方法,感激不尽~!
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。 数组应用&二维数组目录 1. 数组的简单应用2. 数组排序3. 数组查找4. 数组的使用思想5. 查表法6. 二维数组7. 数组综合
回复讨论(解决方案)
最后结果是怎么样的? 贴一下。
结果如下,感谢关注
$a = array( 0 => array( 0=> array( "date" => "201201", "area"=> array( 12 => array( click => "12", traffic => "50" ) , 8=> array( click => "6", traffic => "60" ) ) ), 1=> array( "date" => "201202", "area"=> array( 12 => array( click => "8", traffic => "40" ), 8=> array( click => "5", traffic => "50" ) ) ) ) );
$t = array();foreach ($a as $k=>$v){ foreach ($v as $k1=>$v1) { $t[0][$k1]['date'] = $v1['date']; foreach ($v1['area'] as $k2=>$v2) { $t[0][$k1]['area'][$k2]['click'] += $v2['click']; $t[0][$k1]['area'][$k2]['traffic'] += $v2['traffic']; } }}echo "";print_r($t);echo "";
结果如下:
Array( [0] => Array ( [0] => Array ( [date] => 201201 [area] => Array ( [12] => Array ( [click] => 12 [traffic] => 50 ) [8] => Array ( [click] => 6 [traffic] => 60 ) ) ) [1] => Array ( [date] => 201202 [area] => Array ( [12] => Array ( [click] => 8 [traffic] => 40 ) [8] => Array ( [click] => 5 [traffic] => 50 ) ) ) ))
感谢四楼正解









