按多列對多維數組數據進行分組並聚合值
問題陳述:
你有一個多維數組,它組合了來自兩個單獨資料庫查詢的資料。此陣列由具有屬性的記錄組成,這些屬性包括「部分」、「位址」、「類型」和「計數」。目標是根據「part」和「type」值對陣列元素進行分組,並計算每組內「count」值的總和。
範例輸入:
<code class="php">$arr1 = [ ['part' => '1', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'ccc', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'ccc', 'type' => '2', 'count' => 5] ];</code>
預期輸出:
<code class="php">$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];</code>
解>
為了實現所需的分組和聚合,我們可以利用PHP 的陣列操作函數。考慮以下函數:<code class="php">function groupByPartAndType($input) { $output = Array(); foreach($input as $value) { $output_element = & $output[$value['part'] . "_" . $value['type']]; $output_element['part'] = $value['part']; $output_element['type'] = $value['type']; !isset($output_element['count']) && $output_element['count'] = 0; $output_element['count'] += $value['count']; } return array_values($output); }</code>將此函數應用於輸入數組 $arr1,我們獲得所需的輸出 $arr2。輸出數組中的每個元素代表一組共享相同「部分」和「類型」值的資料點,以及對應「計數」值的總和。
替代方法:
如果兩個資料庫查詢源自相同資料庫伺服器,您可以使用SQL 的GROUP BY 功能在資料庫本身內執行分組和聚合,從而無需在PHP 中進行後處理。以上是如何在 PHP 中以多列和聚合值將多維數組資料分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!