Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Barbara Streisandasal
2024-10-28 20:05:31979semak imbas

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>

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>

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>

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

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