Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya mengumpulkan Data Tatasusunan Berbilang Dimensi mengikut Pelbagai Lajur dan Nilai Agregat dalam PHP?

Bagaimanakah saya mengumpulkan Data Tatasusunan Berbilang Dimensi mengikut Pelbagai Lajur dan Nilai Agregat dalam PHP?

Susan Sarandon
Lepaskan: 2024-11-07 03:53:02
asal
364 orang telah melayarinya

How do I Group Multidimensional Array Data by Multiple Columns and Aggregate Values in 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan