欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

多维数组中相同元素相加问题

程序员文章站 2022-05-24 21:44:28
...
首次发帖,请假高手
我从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,其他类推,求遍历或其他能处理成功的方法,感激不尽~!


回复讨论(解决方案)

最后结果是怎么样的? 贴一下。

结果如下,感谢关注

$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                                )                        )                )        ))

感谢四楼正解