Bagaimana untuk Menukar Tatasusunan PHP Berbilang Dimensi kepada Tatasusunan 2D dengan Kekunci Notasi Titik?

Mary-Kate Olsen
Lepaskan: 2024-10-28 00:24:29
asal
467 orang telah melayarinya

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

Tukar Tatasusunan PHP Berbilang Dimensi kepada Tatasusunan 2D dengan Kekunci Notasi Titik

Meratakan tatasusunan PHP berbilang dimensi kepada tatasusunan 2D dengan kekunci tatatanda titik boleh memberi manfaat dalam pelbagai senario. Ia membolehkan anda mengakses nilai tatasusunan bersarang dengan lancar menggunakan tatatanda titik, yang meningkatkan kebolehbacaan dan kebolehselenggaraan kod.

Fungsi Rekursif untuk Menukar Tatasusunan Bersarang

Nasib baik, PHP menyediakan rekursif fungsi yang elegan boleh mencapai penukaran ini:

<code class="php">$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}</code>
Salin selepas log masuk

Penjelasan:

  • Kelas RecursiveIteratorIterator dan RecursiveArrayIterator digunakan untuk mengulang melalui tatasusunan bersarang secara rekursif.
  • Semasa setiap lelaran, kaedah utama RecursiveArrayIterator digunakan untuk menangkap kunci semasa tatasusunan.
  • Kaedah getSubIterator($depth) digunakan untuk mendapatkan semula sub-iterator pada spesifik kedalaman, membolehkan kami mengulangi melalui tatasusunan bersarang.
  • Fungsi julat(0, $ritit->getDepth()) mencipta tatasusunan kedalaman, merentasi dari tatasusunan paling dalam ke tatasusunan paling luar.
  • Fungsi join('.', $keys) menggabungkan kekunci tatasusunan dengan titik(.) sebagai pemisah, mencipta kekunci tatatanda titik.
  • Pasangan nilai kunci yang terhasil disimpan dalam $result array.

Output:

Fungsi ini akan menjana tatasusunan 2D yang diingini dengan kekunci tatatanda titik:

<code class="php">$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Tatasusunan PHP Berbilang Dimensi kepada Tatasusunan 2D dengan Kekunci Notasi Titik?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!