private function makeSumData2deep($dataArr0, $dataArr1, $criteriaData, $dataArrSum, $extractDataArr=[]) {
foreach ($dataArrSum as $key => $val) {
foreach ($dataArr0 as $key0 => $val0) {
if($val0[$criteriaData] == $dataArrSum[$key][$criteriaData]){
if ($extractDataArr==[]) {
foreach ($val0 as $key0_0 => $val0_0) {
$dataArrSum[$key][$key0_0] = $val0_0;
}
} else {
foreach ($val0 as $key0_1 => $val0_1) {
foreach ($extractDataArr as $key2 => $val2) {
if ($key0_1 == $val2) {
$dataArrSum[$key][$key0_1] = $val0_1;
}
}
}
}
}
if ($extractDataArr==[]) {
foreach ($val0 as $key0_0 => $val0_0) {
if(empty($dataArrSum[$key][$key0_0])) {
$dataArrSum[$key][$key0_0] = 0;
}
}
} else {
foreach ($val0 as $key0_0 => $val0_0) {
foreach ($extractDataArr as $key2 => $val2) {
if(empty($dataArrSum[$key][$val2])) {
$dataArrSum[$key][$val2] = 0;
}
}
}
}
}
foreach ($dataArr1 as $key1 => $val1) {
if($val1[$criteriaData] == $dataArrSum[$key][$criteriaData]){
if ($extractDataArr==[]) {
foreach ($val1 as $key1_0 => $val1_0) {
$dataArrSum[$key][$key1_0] = $val1_0;
}
} else {
foreach ($val1 as $key1_1 => $val1_1) {
foreach ($extractDataArr as $key2 => $val2) {
if ($key1_1 == $val2) {
$dataArrSum[$key][$key1_1] = $val1_1;
}
}
}
}
}
if ($extractDataArr==[]) {
foreach ($val1 as $key1_0 => $val1_0) {
if(empty($dataArrSum[$key][$key1_0])) {
$dataArrSum[$key][$key1_0] = 0;
}
}
} else {
foreach ($val1 as $key1_0 => $val1_0) {
foreach ($extractDataArr as $key2 => $val2) {
if(empty($dataArrSum[$key][$val2])) {
$dataArrSum[$key][$val2] = 0;
}
}
}
}
}
}
return $dataArrSum;
}
지금 현재 foreach 문을 너무 많이 돌아서 성능이 당연히 안나와서 나중에 고칠계획이다.
주요 로직은 foreach를 돌면서 $criteriaData 의 키를 기준으로 $dataArr0, $dataArr1에 접근해서 키의 값이 같다면 데이터를 가져와서 $dataArrSum에 합치고 다합치고 나면 $dataArr0, $dataArr1를 돌면서 $dataArrSum에 키가 없다면 0으로 채워준다