Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghimpunkan Baris Tatasusunan 2D mengikut Lajur Tunggal dan Mengagregatkan Lajur Lain dalam PHP?

Bagaimana untuk Menghimpunkan Baris Tatasusunan 2D mengikut Lajur Tunggal dan Mengagregatkan Lajur Lain dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 00:19:28481semak imbas

How to Group 2D Array Rows by a Single Column and Aggregate Another Column in PHP?

Mengumpulkan Baris Tatasusunan 2D mengikut Lajur Tunggal dan Mengagregatkan Lajur Lain

Memandangkan tatasusunan PHP yang mengandungi baris 2D dengan lajur tertentu, tugas biasa ialah mengumpulkan baris berdasarkan pada lajur tertentu dan agregat nilai dari lajur lain.

Sebagai contoh, pertimbangkan tatasusunan berikut:

<code class="php">[
    ['url_id' => 2191238, 'time_spent' => 41],
    ['url_id' => 2191606, 'time_spent' => 215],
    ['url_id' => 2191606, 'time_spent' => 25]
]</code>

Matlamatnya adalah untuk mengira jumlah lajur "masa_dibelanjakan" untuk setiap nilai unik dalam lajur "url_id". Satu penyelesaian yang mungkin melibatkan penggunaan gelung untuk mengulangi tatasusunan:

<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>

Selepas memproses keseluruhan tatasusunan, tatasusunan $ts_by_url akan mengandungi jumlah "masa_dibelanjakan" untuk setiap "url_id" unik:

<code class="php">2191238 => 41
2191606 => 240 // == 215 + 25</code>

Pendekatan ini mengumpulkan baris secara berkesan mengikut "url_id" dan mengagregatkan nilai "time_spent". Ia memanfaatkan sifat tatasusunan bersekutu PHP untuk menyimpan dan mengemas kini nilai dengan cekap berdasarkan kekunci "url_id".

Atas ialah kandungan terperinci Bagaimana untuk Menghimpunkan Baris Tatasusunan 2D mengikut Lajur Tunggal dan Mengagregatkan Lajur Lain dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn