Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Rentetan yang Mewakili Struktur Tatasusunan Bersarang menjadi Tatasusunan?

Bagaimana untuk Menukar Rentetan yang Mewakili Struktur Tatasusunan Bersarang menjadi Tatasusunan?

Susan Sarandon
Susan Sarandonasal
2024-11-01 12:12:02383semak imbas

How to Convert a String Representing a Nested Array Structure into an Array?

Menukar Rentetan dengan Struktur Tatasusunan menjadi Tatasusunan

Masalah:

Anda mempunyai rentetan yang mewakili tatasusunan bersarang struktur, dan anda perlu menukarnya menjadi tatasusunan sebenar. Sebagai contoh, diberikan rentetan berikut:

Main.Sub.SubOfSub

Dan nilai data:

SuperData

Anda mahu mencipta tatasusunan seperti ini:

Array
(
[Main] => Array
    (
        [Sub] => Array
            (
                [SubOfSub] => SuperData
            )
    )
)

Penyelesaian:

Untuk menukar rentetan menjadi tatasusunan, anda boleh menggunakan langkah berikut:

  1. Pisah rentetan kepada tatasusunan kunci: Gunakan fungsi explode() untuk memisahkan rentetan dengan pemisah titik (.). Ini akan memberi anda tatasusunan kunci dalam struktur tatasusunan bersarang.
  2. Buat rujukan kepada punca tatasusunan: Gunakan pembolehubah &$target untuk membuat rujukan kepada akar tatasusunan. Ini akan membolehkan anda mengubah suai struktur tatasusunan semasa anda mengulang melalui kekunci.
  3. Lelaran melalui kekunci: Lelaran melalui kekunci dalam tatasusunan kunci. Untuk setiap kunci, semak sama ada ia wujud dalam tahap semasa tatasusunan. Jika tidak, buat tatasusunan baharu untuk kunci itu.
  4. Kemas kini rujukan: Selepas anda mencipta tatasusunan untuk kunci semasa, kemas kini rujukan untuk menunjuk kepada yang baharu tatasusunan. Ini akan membolehkan anda mengulang lebih jauh ke bawah struktur bersarang.
  5. Tetapkan nilai: Selepas anda mencapai nod daun struktur bersarang, tetapkan nilai data kepada kunci akhir.

Berikut ialah coretan kod yang menunjukkan langkah-langkah:

<code class="php">$key = "Main.Sub.SubOfSub";
$target = array();
$value = "SuperData";

$path = explode('.', $key);
$root = &amp;$target;

while(count($path) > 1) {
    $branch = array_shift($path);
    if (!isset($root[$branch])) {
        $root[$branch] = array();
    }

    $root = &amp;$root[$branch];
}

$root[$path[0]] = $value;</code>

Coretan kod ini akan mencipta struktur tatasusunan yang diingini, dengan nilai data disimpan dalam kunci akhir.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan yang Mewakili Struktur Tatasusunan Bersarang menjadi Tatasusunan?. 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