Php 在多维数组中添加结束值
我有一个具有以下结构的数组Php 在多维数组中添加结束值,php,arrays,Php,Arrays,我有一个具有以下结构的数组 [M] => Array ( [1] => 23 [2] => 0 [3] => 0 [4] => 0 ) )
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
是否有一个函数可以将元素组合在一起,求和总数
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
谢谢你给我指点如何做到这一点。我在这里包含了数组的一部分,然后降低了希望的结果
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
我可以通过在php mysql查询上重新创建第二个数组来实现这一点,但这并不是一种非常有效的方法
Array
(
[1] => Array
(
[Y01MA] => Array
(
[O] => Array
(
[F] => Array
(
[1] => 4
[2] => 6
[3] => 1
)
[M] => Array
(
[1] => 5
[2] => 5
)
)
[P] => Array
(
[F] => Array
(
[2] => 4
[3] => 6
[4] => 1
)
[M] => Array
(
[1] => 1
[2] => 4
[3] => 5
)
)
)
[Y01MB] => Array
(
[O] => Array
(
[F] => Array
(
[1] => 7
[2] => 2
)
[M] => Array
(
[1] => 11
[2] => 1
[3] => 1
)
)
[P] => Array
(
[F] => Array
(
[2] => 3
[3] => 6
)
[M] => Array
(
[2] => 3
[3] => 9
[4] => 1
)
)
)
)
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
理想情况下,我最终会得到这样的结果
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
排列
(
[1] =>阵列
(
[O] =>阵列
(
[F] =>阵列
(
[1] => 18
[2] => 2
[3] => 0
[4] => 0
)
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
您需要数组的递归和
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
可以通过使用函数递归减少数组来实现这一点
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
function sumRecursive($carry, $item) {
if(is_array($item)){
return array_reduce($item, 'sumRecursive', $carry);
}
return $carry+$item ;
}
$sum = sumRecursive(0, $arr);
下面是示例工作代码:
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
另一种方法是利用和迭代第一种方法
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)
工作代码:您是否需要以任何方式对它们进行分组,或者只对数组中的每个值进行分组。到目前为止,您尝试了什么?理想情况下,我希望能够计算出每个[M]和[F]有多少[1][2][3][4],您能给出一个清晰的示例,说明您在问题中想要的输出吗。
[M] => Array
(
[1] => 23
[2] => 0
[3] => 0
[4] => 0
)
)
[P] => Array
(
[F] => Array
(
[1] => 1
[2] => 11
[3] => 7
[4] => 1
)
[M] => Array
(
[1] => 4
[2] => 11
[3] => 8
[4] => 0
)
)
)