Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengubah Tatasusunan 2D menjadi Tatasusunan 3D dengan Mengumpulkan Elemen Berdasarkan Nilai Lajur?

Bagaimana untuk Mengubah Tatasusunan 2D menjadi Tatasusunan 3D dengan Mengumpulkan Elemen Berdasarkan Nilai Lajur?

Barbara Streisand
Lepaskan: 2024-10-28 20:05:31
asal
1077 orang telah melayarinya

How to Transform a 2D Array into a 3D Array by Grouping Elements Based on a Column Value?

Mengumpulkan Data Tatasusunan 2D Berdasarkan Nilai Lajur untuk Mencipta Tatasusunan 3D

Dalam pengaturcaraan, anda mungkin menghadapi keperluan untuk menyusun data dalam tatasusunan berbilang dimensi. Untuk mengurus data kompleks dengan cekap, ia menjadi penting untuk mengumpulkan elemen mengikut kriteria tertentu. Artikel ini menangani cabaran khusus untuk mengumpulkan tatasusunan 2D mengikut nilai dalam lajur tertentu, mengubahnya menjadi tatasusunan 3D untuk visualisasi dan manipulasi yang dipertingkatkan.

Pertimbangkan tatasusunan berbilang dimensi berikut yang mengandungi maklumat pelanggan:

<code class="php">$data = [
    ['cust' => 'XT8900', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8944', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8922', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT8816', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT7434', 'type' => 'standard', 'level' => 7],
];</code>
Salin selepas log masuk

Objektifnya adalah untuk mengumpulkan rekod pelanggan ini berdasarkan lajur 'peringkat' dan mencipta tatasusunan 3D di mana setiap peringkat mengandungi tatasusunan maklumat pelanggan. Hasil yang diingini sepatutnya kelihatan seperti ini:

<code class="php">$result = [
    1 => [
        ['cust' => 'XT8900', 'type' => 'standard'],
        ['cust' => 'XT8944', 'type' => 'standard'],
    ],
    3 => [
        ['cust' => 'XT8922', 'type' => 'premier'],
        ['cust' => 'XT8816', 'type' => 'premier'],
    ],
    7 => [
        ['cust' => 'XT7434', 'type' => 'standard'],
    ],
];</code>
Salin selepas log masuk

Terdapat beberapa pendekatan untuk mencapai ini tetapi mari kita terokai penyelesaian yang berkesan:

  1. Isih Data:
    Mulakan dengan mengisih tatasusunan 2D mengikut lajur 'tahap'. Ini boleh dilakukan menggunakan fungsi usort() untuk membandingkan nilai 'tahap' bagi setiap elemen.
  2. Mengelompokkan Data Isih:
    Sekarang, ulangi melalui yang diisih data dan buat tatasusunan sementara. Untuk setiap entri, dapatkan semula nilai 'level' sebagai kunci dan simpan keseluruhan entri sebagai nilai. Ini secara berkesan akan mengumpulkan rekod pelanggan mengikut tahap.

    <code class="php">foreach ($data as $key => &$entry) {
        $level_arr[$entry['level']][$key] = $entry;
    }</code>
    Salin selepas log masuk

$level_arr yang terhasil akan mempunyai struktur yang diingini, dengan setiap tahap mengandungi pelbagai maklumat pelanggan.

  1. Menukar kepada Tatasusunan 3D:
    Sekarang, tukar $level_arr sementara kepada tatasusunan 3D sasaran. Ini melibatkan penetapan kunci tatasusunan 3D kepada nilai tahap dan nilai kepada tatasusunan pelanggan yang sepadan daripada $level_arr.

    <code class="php">$result = [];
    foreach ($level_arr as $level => $customer_data) {
        $result[$level] = array_values($customer_data);
    }</code>
    Salin selepas log masuk
  2. Keputusan Akhir:
    The $result variable kini ialah tatasusunan 3D dengan rekod pelanggan dikumpulkan mengikut lajur 'tahap'.

Dengan mengikuti langkah ini, anda boleh mengumpulkan data dalam tatasusunan 2D dengan berkesan menggunakan nilai lajur tertentu dan membina Tatasusunan 3D untuk manipulasi dan visualisasi data yang dipertingkatkan. Pendekatan ini menawarkan fleksibiliti dan kecekapan apabila berurusan dengan struktur data yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Tatasusunan 2D menjadi Tatasusunan 3D dengan Mengumpulkan Elemen Berdasarkan Nilai Lajur?. 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