Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah saya mengumpulkan Data Tatasusunan Berbilang Dimensi mengikut Pelbagai Lajur dan Nilai Agregat dalam PHP?
Mengumpulkan Data Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur dan Mengagregatkan Nilai
Pernyataan Masalah:
Anda mempunyai tatasusunan berbilang dimensi yang menggabungkan data daripada dua pertanyaan pangkalan data yang berasingan. Tatasusunan terdiri daripada rekod dengan atribut yang termasuk "bahagian", "alamat", "jenis" dan "kiraan." Matlamatnya ialah untuk mengumpulkan elemen tatasusunan berdasarkan nilai "bahagian" dan "taip" dan mengira jumlah nilai "kiraan" dalam setiap kumpulan.
Contoh Input:
<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>
Output Jangkaan:
<code class="php">$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];</code>
Penyelesaian:
Untuk mencapai pengelompokan dan pengagregatan yang diingini, kita boleh menggunakan Fungsi manipulasi tatasusunan PHP. Pertimbangkan fungsi berikut:
<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>
Dengan menggunakan fungsi ini pada tatasusunan input $arr1, kami memperoleh output yang dikehendaki $arr2. Setiap elemen dalam tatasusunan output mewakili sekumpulan titik data yang berkongsi nilai "bahagian" dan "jenis" yang sama, bersama-sama dengan jumlah nilai "kiraan" yang sepadan.
Pendekatan Alternatif:
Jika kedua-dua pertanyaan pangkalan data berasal daripada pelayan pangkalan data yang sama, anda berkemungkinan menggunakan ciri GROUP BY SQL untuk melaksanakan pengelompokan dan pengagregatan dalam pangkalan data itu sendiri, menghapuskan keperluan untuk pemprosesan pasca dalam PHP.
Atas ialah kandungan terperinci Bagaimanakah saya mengumpulkan Data Tatasusunan Berbilang Dimensi mengikut Pelbagai Lajur dan Nilai Agregat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!