Bagaimana untuk mencapai traversal tak terhingga tatasusunan dalam php

PHPz
Lepaskan: 2023-04-27 09:34:39
asal
771 orang telah melayarinya

Dalam bahasa PHP, tatasusunan ialah jenis data yang sangat biasa. Selalunya kita perlu melintasi tatasusunan untuk mendapatkan semua elemen dalam tatasusunan. Pendekatan biasa ialah menggunakan pernyataan foreach untuk melintasi. Walau bagaimanapun, jika tatasusunan ialah tatasusunan berbilang dimensi, sarang menggunakan pernyataan foreach boleh menjadi rumit. Dalam kes ini, kita boleh menggunakan kaedah rekursif untuk melintasi tatasusunan secara tak terhingga.

1. Apakah rekursi?

Rekursi merujuk kepada gelagat fungsi yang memanggil dirinya sendiri semasa pelaksanaan. Fungsi rekursif ialah alat yang sangat berkuasa yang boleh digunakan untuk menyelesaikan banyak masalah kompleks, seperti traversal struktur pokok, traversal struktur graf, dll. Dalam bahasa PHP, fungsi rekursif dipanggil dengan cara yang sama seperti fungsi biasa, kecuali fungsi itu memanggil dirinya secara dalaman.

2. Merentasi tatasusunan dua dimensi secara rekursif

Dalam PHP, kita boleh menggunakan kaedah rekursif untuk melintasi tatasusunan berbilang dimensi secara tak terhingga. Berikut ialah contoh kod untuk merentasi tatasusunan dua dimensi secara rekursif:

function recursive_print_array($array) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            recursive_print_array($value);
        } else {
            echo $value . "\n";
        }
    }
}
Salin selepas log masuk

Dalam fungsi ini, kita mula-mula melintasi setiap elemen tatasusunan:

foreach ($array as $key => $value)
Salin selepas log masuk

dan kemudian semak sama ada elemen semasa ialah tatasusunan:

if (is_array($value))
Salin selepas log masuk

Jika ia adalah tatasusunan, kami menggunakan kaedah rekursif untuk melintasi tatasusunan:

recursive_print_array($value);
Salin selepas log masuk

Jika ia bukan tatasusunan, nilai elemen ini dikeluarkan secara langsung:

echo $value . "\n";
Salin selepas log masuk

Ini Fungsi boleh merentasi tatasusunan dua dimensi tanpa had. Sila lihat kod contoh di bawah:

$array = array(
    'a' => array('b' => array('c' => 'd'), 'e' => 'f'),
    'g' => 'h',
    'i' => array('j' => array('k' => 'l'))
);

recursive_print_array($array);
Salin selepas log masuk

Kod sampel ini akan mengeluarkan yang berikut:

d
f
h
l
Salin selepas log masuk

3 Merentasi tatasusunan mana-mana dimensi

Kod sampel di atas boleh hanya merentasi tatasusunan dua dimensi, tetapi sebenarnya sama mudahnya untuk melintasi tatasusunan mana-mana dimensi secara rekursif. Berikut ialah contoh kod:

function recursive_traverse($array) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            recursive_traverse($value);
        } else {
            echo $value . "\n";
        }
    }
}
Salin selepas log masuk

Fungsi ini pada asasnya sama dengan kod sampel di atas, kecuali nama dan nama parameter telah berubah. Fungsi ini boleh melintasi tatasusunan mana-mana dimensi secara rekursif.

Sila lihat kod sampel di bawah:

$array = array(
    'a' => array('b' => array('c' => array('d' => 'e', 'f' => 'g'))),
    'h' => 'i',
    'j' => array('k' => array('l' => array('m' => 'n')))
);

recursive_traverse($array);
Salin selepas log masuk

Dalam kod sampel ini, kami mentakrifkan tatasusunan lima dimensi. Dengan menggunakan fungsi di atas, kita boleh lelaran melalui semua elemen tatasusunan ini. Berikut ialah output fungsi ini:

e
g
i
n
Salin selepas log masuk

4. Ringkasan

Menggunakan kaedah rekursif untuk melintasi tatasusunan secara tak terhingga ialah alat yang sangat berkuasa. Selagi kita memahami konsep rekursi, kita boleh melintasi tatasusunan dimensi sewenang-wenangnya dengan mudah. Dalam pembangunan sebenar, kaedah rekursif biasanya digunakan untuk melintasi jenis data seperti struktur pokok dan struktur graf. Menguasai teknologi ini boleh menjadikan program kami lebih fleksibel dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk mencapai traversal tak terhingga tatasusunan dalam php. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan