Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menukar Rentetan Sintaks Dot secara Rekursif kepada Tatasusunan Berbilang Dimensi dalam PHP?

Bagaimanakah Saya Boleh Menukar Rentetan Sintaks Dot secara Rekursif kepada Tatasusunan Berbilang Dimensi dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 05:28:17709semak imbas

How Can I Recursively Convert Dot Syntax Strings to Multidimensional Arrays in PHP?

Cara Membuat Tatasusunan Berbilang Dimensi daripada Sintaks Titik dalam PHP

Dalam PHP, menukar sintaks titik (seperti "this.that.other" ) ke dalam tatasusunan berbilang dimensi boleh menjadi tugas yang berguna untuk mengatur data. Begini cara untuk mencapai penukaran ini:

Menggunakan Fungsi Rekursif:

Fungsi berikut, assignArrayByPath(), boleh menavigasi sintaks titik secara rekursif dan mencipta tatasusunan berbilang dimensi:

function assignArrayByPath(&$arr, $path, $value, $separator='.') {
    $keys = explode($separator, $path);

    foreach ($keys as $key) {
        $arr = &$arr[$key];
    }

    $arr = $value;
}

Macam mana berfungsi:

  1. Fungsi ini mengambil empat parameter:

    • $arr: Tatasusunan berbilang dimensi untuk diubah suai.
    • $path: Sintaks titik laluan yang mewakili struktur kunci yang diingini.
    • $value: Nilai untuk diberikan kepada yang terakhir kunci.
    • $separator: (Pilihan) Pembatas yang digunakan dalam sintaks titik (lalai kepada .)
  2. Fungsi explode() membahagikan laluan kepada kekunci individu.
  3. Fungsi ini berulang melalui setiap kekunci, menggunakan rujukan untuk mengubah suai elemen yang sesuai dalam tatasusunan $arr.
  4. Jika kunci tidak wujud, ia dicipta dan diberikan kepada rujukan $arr.
  5. Akhir sekali, nilai $ diberikan kepada kunci terakhir dalam tatasusunan.

Contoh:

Untuk menukar sintaks titik "s1.t1.column.1" kepada tatasusunan berbilang dimensi, gunakan kod berikut:

$source = [];
assignArrayByPath($source, 's1.t1.column.1', 'size:33%');

echo $source['s1']['t1']['column']['1']; // Outputs: 'size:33%'

Pendekatan ini menyediakan kaedah yang fleksibel dan rekursif untuk menukar sintaks titik kompleks kepada tatasusunan berbilang dimensi dalam PHP, memastikan bahawa walaupun kunci yang tidak wujud dicipta secara automatik. Ia amat berguna untuk menghuraikan struktur data bersarang ke dalam format tatasusunan berstruktur.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Sintaks Dot secara Rekursif kepada Tatasusunan Berbilang Dimensi dalam PHP?. 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