Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Tatasusunan PHP Berbilang Dimensi kepada Tatasusunan 2D dengan Kekunci Notasi Titik?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 00:24:29468semak imbas

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>

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>

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!

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