首頁  >  文章  >  後端開發  >  如何將二維 PHP 數組中的列進行分組和求和?

如何將二維 PHP 數組中的列進行分組和求和?

Linda Hamilton
Linda Hamilton原創
2024-10-26 04:06:27551瀏覽

How to Group and Sum Columns in a 2D PHP Array?

將二維數組中的列進行分組和求和

任務是處理PHP 資料數組,其中每個元素代表一行,每行由兩個欄位組成:url_id 和time_spent。目標是按 url_id 列對行進行分組,並對每組的 time_spent 列中的值求和。

解決方案:

我們可以使用PHP 的array_count_values()函數來實現此目的:

<code class="php">$ts_by_url = array_count_values(array_column($array, 'url_id'));</code>

array_column() 函數從輸入數組中提取url_id 列,產生url_id 值的數組。然後,array_count_values() 函數會對每個 url_id 值的出現次數進行計數,從而有效地將資料行分組。

但是,此解決方案僅提供每個 url_id 的出現次數。為了對每個群組中的time_spent 值求和,我們需要修改方法:

<code class="php">$ts_by_url = array();
foreach ($array as $data) {
    if (!array_key_exists($data['url_id'], $ts_by_url)) {
        $ts_by_url[$data['url_id']] = 0;
    }
    $ts_by_url[$data['url_id']] += $data['time_spent'];
}</code>

在這個更新的方法中,我們維護一個數組$ts_by_url ,它將保存每個url_id 的time_spent 值的總和。我們迭代輸入數組,檢查每一行對應的 url_id 是否已存在於 $ts_by_url 中。如果沒有,我們將其初始化為 0。無論如何,我們將 time_spent 值新增至 $ts_by_url 中對應的 url_id 條目。

這種方法允許我們按 url_id 對行進行分組,並對 time_spent 值求和每組。產生的 $ts_by_url 陣列將包含所需的總和,以 url_id 為鍵。

以上是如何將二維 PHP 數組中的列進行分組和求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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