php中多维数组的改进
我有这样一个数组:php中多维数组的改进,php,arrays,Php,Arrays,我有这样一个数组: [emp_name1] => Array ( [projectArray] => Array ( [2015-06-02] => Array ( [estimated_time] => 6.00
[emp_name1] => Array
(
[projectArray] => Array
(
[2015-06-02] => Array
(
[estimated_time] => 6.00
[cost] => 570.00
)
[2015-06-03] => Array
(
[estimated_time] => 8.00
[cost] => 760.00
)
)
)
输出必须是:
data[emp_name1][projectArray][estimated_time]=14
data[emp_name1][projectArray][cost]=1330.00
我不知道如何重新设计上述阵列以获得预期的阵列
我尝试了以下方法:
<?php foreach($row as $empName => $empArrayValue){
foreach(array_unique($projectArray) as $k => $pname){
$total[$pname]["estimated_time"] += $row[$empName][$pname]["estimated_time"];
$total[$pname]["cost"] += $row[$empName][$pname][$m]["cost"];
}
}
我认为您缺少了一个foreach
循环:
<?php foreach($row as $empName => $empArrayValue){
foreach($empArrayValue as $pname => $projectArray){
foreach($projectArray as $k => $dateArray){
$total[$empName][$pname]["estimated_time"] += $dateArray["estimated_time"];
$total[$empName][$pname]["cost"] += $dateArray["cost"];
}
}
}?>
我想你要找的是这样的东西
$new_arr = array();
foreach($arr as $emp => $emp_arr){
foreach($arr[$emp] as $projectArray => $projectArray_arr){
foreach($arr[$emp][$projectArray] as $date => $value3){
@$new_arr[$emp][$projectArray]['estimated_time'] += $arr[$emp][$projectArray][$date]['estimated_time'];
@$new_arr[$emp][$projectArray]['cost'] += $arr[$emp][$projectArray][$date]['cost'];
}
}
}
仅对循环使用的解决方案
$k=array_keys($emp_name1['projectArray']);
$sum1=0;
$sum2=0;
for($v=0;$v<count($emp_name1['projectArray']);$v++)
{
$sum1=$sum1+$emp_name1['projectArray'][$k[$v]]["estimated_time"]+0;
$sum2=$sum2+$emp_name1['projectArray'][$k[$v]]["cost"]+0;
}
echo $sum1;
echo "<br/>";
echo $sum2;
$k=array\u键($emp\u name1['projectArray']);
$sum1=0;
$sum2=0;
对于($v=0;$v我不建议在任何情况下关闭代码,因此最好不要使用@,而是检查键是否已预先设置
下面是一个运行的原型,演示如何实现它
<?php
$your_main_array = [
'emp_name1' => [
'projectArray' => [
'2015-06-02' => [
'estimated_time' => 6.00,
'cost' => 570.00,
],
'2015-06-03' => [
'estimated_time' => 8.00,
'cost' => 7600.00,
]
]
]
];
$empName1 = 'emp_name1';
$sumTimeEstimateKey = 'estimated_time';
$sumCostKey = 'cost';
$result = [$empName1 =>[]];
foreach ($your_main_array[$empName1] as $projectName => $projects) {
if (!isset($result[$empName1][$projectName])) {
$result[$empName1][$projectName] = [
$sumTimeEstimateKey => 0.0,
$sumCostKey => 0.0,
];
}
foreach ($projects as $project) {
$result[$empName1][$projectName][$sumTimeEstimateKey] += $project[$sumTimeEstimateKey];
$result[$empName1][$projectName][$sumCostKey] += $project[$sumCostKey];
}
}
var_dump($result);
是否设置为$total[$empName][$pname][“估计时间”]?
array(1) {
'emp_name1' =>
array(1) {
'projectArray' =>
array(2) {
'estimated_time' =>
double(14)
'cost' =>
double(8170)
}
}
}