首頁  >  文章  >  後端開發  >  如何在 PHP 中以多列和聚合值將多維數組資料分組?

如何在 PHP 中以多列和聚合值將多維數組資料分組?

Susan Sarandon
Susan Sarandon原創
2024-11-07 03:53:02258瀏覽

How do I Group Multidimensional Array Data by Multiple Columns and Aggregate Values in PHP?

按多列對多維數組數據進行分組並聚合值

問題陳述:

你有一個多維數組,它組合了來自兩個單獨資料庫查詢的資料。此陣列由具有屬性的記錄組成,這些屬性包括「部分」、「位址」、「類型」和「計數」。目標是根據「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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn