การเรียกซ้ำและโครงสร้างหลายมิติใน PHP

กำหนดให้มีอาร์เรย์หลายมิติที่มีระดับการซ้อน ตามต้องการ ตัวอย่างเช่น:

php<?php
  $arr = [
    1,
    [
      2, 7, 8
    ],
    [
      3, 4, [5, [6, 7]],
    ]
  ];
?>

อย่างที่คุณเห็น อาร์เรย์นี้มีโครงสร้าง ที่ซับซ้อน และสันนิษฐานว่าโครงสร้างนี้ สามารถเป็นไปตามต้องการได้ และระดับ การซ้อนสามารถลึกได้ตามต้องการ

สมมติว่าเราต้องการแสดงองค์ประกอบพื้นฐาน (ซึ่งไม่ใช่อาร์เรย์) ทั้งหมดของอาร์เรย์ของเราบนหน้าจอ ในกรณีนี้ การวนซ้ำผ่านอาร์เรย์ดังกล่าว เราไม่สามารถใช้ลูปได้ง่ายๆ เพราะอาร์เรย์มีโครงสร้างไม่เป็นระเบียบ และระดับการซ้อนไม่ทราบล่วงหน้า

แต่สำหรับการวนซ้ำผ่านอาร์เรย์ดังกล่าว การใช้ การเรียกซ้ำจะสะดวกมาก

เริ่มต้นด้วยการสร้างฟังก์ชัน ที่รับพารามิเตอร์ เป็นอาร์เรย์ของเรา และในฟังก์ชัน สร้างลูปเพื่อวนซ้ำผ่านอาร์เรย์ของเรา:

php<?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<?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<?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]]]]);
?>
Задание 1

กำหนดอาร์เรย์หลายมิติที่มีระดับการซ้อน ตามต้องการ ตัวอย่างเช่น:

php<?php
  $arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]];
?>

ใช้การเรียกซ้ำเพื่อแสดงองค์ประกอบพื้นฐาน ทั้งหมดของอาร์เรย์นี้บนหน้าจอ