Mengumpul dan Menjumlahkan Lajur dalam Tatasusunan 2D
Tugasnya adalah untuk memproses tatasusunan data PHP, di mana setiap elemen mewakili satu baris, dan setiap baris terdiri daripada dua lajur: url_id dan time_spent. Matlamatnya adalah untuk mengumpulkan baris mengikut lajur url_id dan menjumlahkan nilai dalam lajur time_spent untuk setiap kumpulan.
Penyelesaian:
Kita boleh menggunakan array_count_values() PHP fungsi untuk mencapai ini:
<code class="php">$ts_by_url = array_count_values(array_column($array, 'url_id'));</code>
Fungsi array_column() mengekstrak lajur url_id daripada tatasusunan input, menghasilkan tatasusunan nilai url_id. Fungsi array_count_values() kemudian mengira kejadian setiap nilai url_id, mengumpulkan baris dengan berkesan.
Walau bagaimanapun, penyelesaian ini hanya menyediakan kiraan kejadian untuk setiap url_id. Untuk menjumlahkan nilai time_spent dalam setiap kumpulan, kita perlu mengubah suai pendekatan:
<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>
Dalam pendekatan yang dikemas kini ini, kami mengekalkan tatasusunan $ts_by_url yang akan menyimpan jumlah nilai time_spent untuk setiap url_id. Kami beralih melalui tatasusunan input, menyemak setiap baris jika url_id yang sepadan sudah ada dalam $ts_by_url. Jika tidak, kami memulakannya dengan nilai 0. Walau apa pun, kami menambah nilai time_spent pada entri url_id yang sepadan dalam $ts_by_url.
Pendekatan ini membolehkan kami mengumpulkan baris mengikut url_id dan menjumlahkan nilai time_spent untuk setiap kumpulan. Tatasusunan $ts_by_url yang terhasil akan mengandungi jumlah yang dikehendaki, dikunci oleh url_id.
Atas ialah kandungan terperinci Bagaimana untuk Menghimpun dan Menjumlahkan Lajur dalam Tatasusunan PHP 2D?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!