PHP foreach dengan Nested Array
Soalan: Bagaimana untuk mengakses tatasusunan bersarang tertentu menggunakan gelung foreach dalam PHP ?
Pertimbangkan tatasusunan bersarang berikut:
<code class="php">array( [0] => array( [0] => one [1] => array( [0] => 1 [1] => 2 [2] => 3 ) ) [1] => array( [0] => two [1] => array( [0] => 4 [1] => 5 [2] => 6 ) ) [2] => array( [0] => three [1] => array( [0] => 7 [1] => 8 [2] => 9 ) ) ) );</code>
Matlamatnya adalah untuk mengulangi nilai tatasusunan bersarang pada kekunci 1, tanpa menggunakan perbandingan boleh ubah.
Jawapan: Terdapat dua pendekatan untuk mencapai ini:
1. Gelung Bersarang (Kedalaman Tetap):
Kaedah ini sesuai jika kedalaman tatasusunan bersarang diketahui lebih awal.
<code class="php">foreach ($tmpArray as $innerArray) { if (is_array($innerArray)) { foreach ($innerArray as $value) { echo $value; } } else { echo $innerArray; } }</code>
2. Fungsi Rekursif (Kedalaman Tidak Diketahui):
Pendekatan ini digunakan apabila kedalaman tatasusunan bersarang tidak diketahui. Ia melibatkan fungsi rekursif yang merentasi tatasusunan:
<code class="php">function displayArrayRecursively($arr, $indent='') { if ($arr) { foreach ($arr as $value) { if (is_array($value)) { displayArrayRecursively($value, $indent . '--'); } else { echo "$indent $value \n"; } } } } $tmpArray = array( array("one", array(1, 2, 3)), array("two", array(4, 5, 6)), array("three", array(7, 8, 9)) ); displayArrayRecursively($tmpArray);</code>
Kes Khusus:
Untuk mengakses tatasusunan bersarang sahaja dengan nilai untuk tahap ketiga (kunci 2) , gunakan kod berikut:
<code class="php">foreach ($tmpArray as $inner) { if (is_array($inner)) { foreach ($inner[1] as $value) { echo "$value \n"; } } }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Tatasusunan Bersarang pada Indeks Tertentu Menggunakan foreach dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!