我試圖在關(guān)聯(lián)數(shù)組中用 2 個鍵條件對值求和,但沒有得到任何結(jié)果,只是不像預(yù)期的那樣。我的陣列:Array([0] => Array ( [pid] => P1 [rid] => 1 [price] => 100 )[1] => Array ( [pid] => P1 [rid] => 1 [price] => 120 )[2] => Array ( [pid] => P1 [rid] => 1 [price] => 130 )[3] => Array ( [pid] => P2 [rid] => 1 [price] => 80 )[4] => Array ( [pid] => P2 [rid] => 1 [price] => 120 )[5] => Array ( [pid] => P2 [rid] => 2 [price] => 150 ));我已經(jīng)嘗試了How to GROUP BY 和 SUM PHP Array 中的一些代碼 ?或在 PHP 中對數(shù)組進(jìn)行分組然后代碼變成:$groups = array();foreach ($array as $item) { $key = $item['pid']; if (!array_key_exists($key,$groups)) { $groups[$key] = array( 'pid' => $item['pid'], 'rid'=>$item['rid'], 'price' => $item['price'] ); } else { $groups[$key]['price'] += $item['price']; }}我期望輸出數(shù)組:Array([0] => Array ( [pid] => P1 [rid] => 1 [price] => 350 ) [1] => Array ( [pid] => P2 [rid] => 1 [price] => 200 )[2] => Array ( [pid] => P2 [rid] => 2 [price] => 150 ));我不知道如何用 array_reduce 和 foreach 來解決這個問題,請用其他參考打我或幫我解決這個問題。
1 回答

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
如果$data是您的輸入數(shù)組,則可以使用以下代碼
$r = array();
foreach ( $data as $d ) {
$key = $d['pid'] . '-' . $d['rid'];
if( !isset ( $r[$key] ) ) {
$r[$key] = $d;
} else {
$r[$key]['price'] += $d['price'];
}
}
echo '<pre>';
print_r($r);
die;
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報
0/150
提交
取消