我有一个数组
$data = array(
1 => array(1 => 11 ,2 => 21, 3 => 31),
2 => array(1 => 21 ,2 => 22),
3 => array(1 => 31 ,2 => 23, 3 => 32),
);
我想把它转换成
$data = array(
1 => array(1 => 11 ,2 => 21, 3 => 31, 'Total' => 63),
2 => array(1 => 21 ,2 => 22, 'Total' => 43),
3 => array(1 => 31 ,2 => 23, 3 => 32, 'Total' => 83),
'Total' => array(1 => 63,2 => 46,3 => 63, 'Total' => 172),
);
键1、2、3是动态的,它们可以是1到10,并且也用于子阵列。你能帮忙吗?
1条答案
按热度按时间gcuhipw91#
我在Stack Overflow中找到的大多数答案都与数组中的元素求和或多维数组中不同键的求和有关,但我找不到任何在同一代码中解决这两个问题的答案,所以我想分享一下可能会有用。
驻地
你想要的结果似乎不正确,通过手动计算,总数应该与你描述的不同。所以我假设你的例子是错误的,这是你想要的实际结果:
循环和求和数组
所以你基本上想要两件事:
1.对于数组的每个第一级元素,您需要计算Total。这是通过
array_sum
完成的,您可以通过在$data
数组的第一级执行foreach
来应用它。More info on array_sum和the official php documentation。1.然后,对于每个第二级元素,您希望对具有相同
key
的元素求和。为此,可以使用一个简单的foreach,它跟踪第二级键并对每个值求和结果代码
生成的代码将这两点与以下逻辑结合在一起:
1.在
$data
数组的第一级中初始化Totals
键1.循环第一级元素
1.对于每个第一级元素,使用
array_sum
获取Total
1.循环第二级元素
1.对于第二级的每个索引(1、2、3),在
Totals
数组中初始化相同的索引1.对于第二级的每个索引(1,2,3),对Totals数组中的计数器(11,21,31)求和
我添加了注解以使其更清晰: