我有多維數組:多重陣列計數值
$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]子陣列的值。但問題是沒有返回子數組,它的key [id]沒有相同的例子。在我的情況下 - 具有[id] = 3的子數組不會返回。此外,[id] = 1和[id] = 2的子數組將重複[n-n/2]次。
我認爲,這個問題是在使用週期 - for ($i = 0; $i < $cnt; $i++)
和條件if ($array[$i]["id"] == $array[$i++]["id"])
,因爲它看起來很愚蠢,但我找不到其他東西。
這正是我所需要的!感謝幫助。需要爲未來分析這個例子 – 2014-11-06 14:45:12