I가 다차원 배열 :다중 배열 계수 값
$array = array(
array(
"id" => 1,
"value" => 100
),
array(
"id" => 1,
"value" => 200
),
array(
"id" => 1,
"value" => 300
),
array(
"id" => 2,
"value" => 2
),
array(
"id" => 2,
"value" => 5
),
array(
"id" => 3,
"value" => 10.50
),
);
나는이 같은 새로운 다차원 배열을 얻을 필요가
: 내 말은
$newArray = array(
array(
"id" => "1",
"sum_of_values" => 600
),
array(
"id" => 2,
"sum_of_values" => 7
),
array(
"id" => 3,
"sum_of_values" => 10.50
),
);
를, 키 [ sum_of_values]는 동일한 키 [id]를 가진 하위 배열의 값을 계산해야합니다.
$cnt = count($array);
$finalArray = array();
$tempArray = array();
for($i = 0; $i < $cnt; $i++){
if($array[$i]["id"] == $array[$i++]["id"]){
$search = $array[$i]["id"];
$column = "value";
$sum = array_sum(
array_map(
function($data) use ($column) {
return $data[$column];
},
array_filter(
$array,
function($data) use ($search) {
return fnmatch($search, $data["id"]);
}
)
)
);
$tempArray = array(
"id" => $array[$i]["id"],
"sum_of_values" => $sum
);
$finalArray[] = $tempArray;
} else {
$tempArray = array(
"id" => $array[$i]["id"],
"sum_of_values" => $array[$i]["value"]
);
}
}
을 그리고 그것은 같은 [ID]와 하위 배열의 값을 계산, 작동 :
나는 이것을 시도했습니다. 하지만 문제는 하위 배열을 반환하지 않는데, 키 [id]에는 동일한 예제가 없습니다. 내 경우에는 [id] = 3 인 하위 배열이 반환되지 않습니다. 또한 [id] = 1 및 [id] = 2 인 하위 배열은 [n-n/2] 번 반복됩니다.
나는이 문제가 바보 같이 보이기 때문에 for ($i = 0; $i < $cnt; $i++)
주기와 조건 if ($array[$i]["id"] == $array[$i++]["id"])
을 사용하고 있다고 생각하지만 다른 것을 찾을 수 없습니다.
이것은 정확히 내가 필요한 것입니다! 도와 주셔서 감사합니다. 미래를 위해이 예를 분석 할 필요가있다. –