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

Susan Sarandon
Lepaskan: 2024-11-01 12:12:02
asal
380 orang telah melayarinya

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

Dan nilai data:

SuperData
Salin selepas log masuk

Anda mahu mencipta tatasusunan seperti ini:

Array
(
[Main] => Array
    (
        [Sub] => Array
            (
                [SubOfSub] => SuperData
            )
    )
)
Salin selepas log masuk

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

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!

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