相同值的php数组和
我有这个阵列:相同值的php数组和,php,arrays,sum,Php,Arrays,Sum,我有这个阵列: Array ( [0] => Array ( [0] => Array ( [07] => Array ( [2] => 352.9 [3] => 375737 [4] => 1000000002 ) ) [1] => Array (
Array ( [0] =>
Array (
[0] => Array (
[07] => Array (
[2] => 352.9
[3] => 375737
[4] => 1000000002
) )
[1] => Array (
[07] => Array (
[2] => 362.1
[3] => 375797
[4] => 1000000002
) )
)
Array ( [1] =>
[0] => Array (
[08] => Array (
[2] => 305.7
[3] => 375857
[4] => 1000000002
) )
)
)
我需要密钥07(即月份)的最终数组和,如下所示:
Array ( [0] =>
Array (
[0] => Array (
[07] => Array (
[2] => 3254.9 ( the sum of each 07 )
[3] => 6521545 ( the sum )
[4] => 98474916521621 ( the sum )
) )
)
Array ( [1] =>
[0] => Array (
[08] => Array (
[2] => 305.7 ( not summed cause month 08 is only one )
[3] => 375857 ""
[4] => 1000000002 ""
) )
)
)
有什么帮助吗?在这里,试试这个-我确信它既不是一个完美的解决方案,也不是一个最优的解决方案(3个foreach es),但它可以在相当大的数据集上工作 $inputArray是包含您提供的数据的多维数组,顺便说一句 编辑:固定版本:
$result = array();
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
EDIT2:由于更改了数组的格式,因此解决方案不同:
注意:$array1和$array2是您的“全局”预定义阵列
$arrayWrapper = array_merge( ( array ) $array1, ( array ) $array2 );
$result = array();
foreach ( $arrayWrapper as $inputArray ) {
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
}
用你的数据测试过,应该可以
干杯。在这里,试试这个-我确信它既不是一个完美的解决方案,也不是最优的解决方案(3个foreach es),但它在相当大的数据集上工作 $inputArray是包含您提供的数据的多维数组,顺便说一句 编辑:固定版本:
$result = array();
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
EDIT2:由于更改了数组的格式,因此解决方案不同:
注意:$array1和$array2是您的“全局”预定义阵列
$arrayWrapper = array_merge( ( array ) $array1, ( array ) $array2 );
$result = array();
foreach ( $arrayWrapper as $inputArray ) {
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
}
用你的数据测试过,应该可以
干杯。您能显示它不工作的代码吗?或者你想让我们从头开始写?你确定你的数字是正确的吗?07中的总和似乎有点武断,无法得出任何结论。我需要从头开始写!!你能显示它不工作的代码吗?或者你想让我们从头开始写?你确定你的数字是正确的吗?07中的总和似乎有点武断,无法得出任何结论。我需要从头开始写!!我已经试过了,但是没有用!如果我打印\r$result,我会看到相同的数组!谢谢!工作我已经编辑了我的问题,添加了2个全局数组!你能用这种方法修改代码吗?我不明白怎么做!!我已经试过了,但是没有用!如果我打印\r$result,我会看到相同的数组!谢谢!工作我已经编辑了我的问题,添加了2个全局数组!你能用这种方法修改代码吗?我不明白怎么做!!