การเรียกซ้ำและโครงสร้างหลายมิติใน PHP
กำหนดให้มีอาร์เรย์หลายมิติที่มีระดับการซ้อน ตามต้องการ ตัวอย่างเช่น:
<?php
$arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
?>
อย่างที่คุณเห็น อาร์เรย์นี้มีโครงสร้าง ที่ซับซ้อน และสันนิษฐานว่าโครงสร้างนี้ สามารถเป็นไปตามต้องการได้ และระดับ การซ้อนสามารถลึกได้ตามต้องการ
สมมติว่าเราต้องการแสดงองค์ประกอบพื้นฐาน (ซึ่งไม่ใช่อาร์เรย์) ทั้งหมดของอาร์เรย์ของเราบนหน้าจอ ในกรณีนี้ การวนซ้ำผ่านอาร์เรย์ดังกล่าว เราไม่สามารถใช้ลูปได้ง่ายๆ เพราะอาร์เรย์มีโครงสร้างไม่เป็นระเบียบ และระดับการซ้อนไม่ทราบล่วงหน้า
แต่สำหรับการวนซ้ำผ่านอาร์เรย์ดังกล่าว การใช้ การเรียกซ้ำจะสะดวกมาก
เริ่มต้นด้วยการสร้างฟังก์ชัน ที่รับพารามิเตอร์ เป็นอาร์เรย์ของเรา และในฟังก์ชัน สร้างลูปเพื่อวนซ้ำผ่านอาร์เรย์ของเรา:
<?php
function func($arr) {
foreach ($arr as $elem) {
echo $elem;
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
ลูปที่เราสร้างขึ้นจะวนซ้ำเฉพาะ
องค์ประกอบของอาร์เรย์หลักเท่านั้น นั่นคือตอนแรก
มันจะแสดง 1 จากนั้น [2, 7, 8],
และจากนั้น [3, 4, [5, [6, 7]]
ตอนนี้ให้เราแยกองค์ประกอบพื้นฐาน และองค์ประกอบที่เป็นอาร์เรย์ในลูป:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
// องค์ประกอบเป็นอาร์เรย์
} else {
// องค์ประกอบเป็นพื้นฐาน
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
และตอนนี้ทำให้ถ้าองค์ประกอบของเรา เป็นอาร์เรย์ ฟังก์ชันจะเรียกตัวเอง โดยส่ง อาร์เรย์นั้นเป็นพารามิเตอร์:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
func($elem);
} else {
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
กำหนดอาร์เรย์หลายมิติที่มีระดับการซ้อน ตามต้องการ ตัวอย่างเช่น:
<?php
$arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]];
?>
ใช้การเรียกซ้ำเพื่อแสดงองค์ประกอบพื้นฐาน ทั้งหมดของอาร์เรย์นี้บนหน้าจอ