Php 对数组中的数组求和并返回一个新数组
我有两个如下所示的阵列:Php 对数组中的数组求和并返回一个新数组,php,arrays,sum,Php,Arrays,Sum,我有两个如下所示的阵列: $r1[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc); $r2[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc); Array 1: [1] = [1400] [20] ["Standard timelønn"] [2] = [NULL] [20] ["Kveldstillegg"] Array 2: [
$r1[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc);
$r2[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc);
Array 1:
[1] = [1400] [20] ["Standard timelønn"]
[2] = [NULL] [20] ["Kveldstillegg"]
Array 2:
[1] = [NULL] [20] ["Standard timelønn"]
[2] = [1500] [20] ["Kveldstillegg"]
假设每个数组的值如下所示:
$r1[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc);
$r2[$db_rate_type] = Array($db_rate_in, $db_rate_out, $db_rate_desc);
Array 1:
[1] = [1400] [20] ["Standard timelønn"]
[2] = [NULL] [20] ["Kveldstillegg"]
Array 2:
[1] = [NULL] [20] ["Standard timelønn"]
[2] = [1500] [20] ["Kveldstillegg"]
如何对数组的值求和,但在开始时保留计数ID
我尝试了以下代码:
$c = array_map(function () {
return array_sum(func_get_args());
}, $a, $b);
但它只对添加到另一个数组中的一个数组计数,而不对数组中的数组计数。我希望返回的内容如下:
Array returned:
[1] = [1400] [40] ["Standard timelønn"]
[2] = [1500] [40] ["Kveldstillegg"]
那么,我如何才能做到这一点,但要让它尽可能有效
数据库获取等的完整代码可以在5.6的示例中找到(需要参数解包)
我希望这对你有所帮助
<?php
//your needs
/*
$d = array(
0 => array(1400, 40, 1500, 30),
1 => array(1500, 40, null, 30)
);
*/
//a
$a = array(
0 => array(1400,20,null,15),
1 => array(null, 20, null, 15)
);
//b
$b = array(
0 => array(null,20,1500,15),
1 => array(1500, 20, null, 15)
);
//c
$c = array_map(function () {
$args = func_get_args();
$sumArray = array();
foreach ($args as $k=>$subArray) {
foreach ($subArray as $id=>$value) {
@$sumArray[$id]+=$value;
}
}
return $sumArray;
}, $a, $b);
//result
print_r($c);
?>
您使用什么版本的PHP?根据具体情况,可能会有不同的解决方案。今后,请不要编辑您的问题,以免使现有答案无效。这对用户来说是不公平的,因为他们花了很多时间来写你宣布无效的答案。下一次,只需问一个新问题。Se更新了一个问题,另外,我希望数组键相同,从1开始,然后继续到2等等。再说一遍:您的PHP版本是什么?运行版本5.3时的错误是:Parse Error:syntax Error,unexpected'第1067行的/home/conn/subdomener/projects/functions.php中的['是一个非常旧的版本,请更新。否则,您应该将所有的[*]
更改为数组(*)
。返回可捕获的致命错误:参数2传递给了{closure}()必须是一个数组,给定null,在第1071行的/home/connecti/subdomener/projects/functions.php中调用,在第1058行的/home/connecti/subdomener/projects/functions.php中定义