Rekurencja i struktury wielowymiarowe w PHP

Dana jest tablica wielowymiarowa o dowolnym poziomie zagnieżdżenia, na przykład taka:

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

Jak widzisz, ta tablica ma złożoną strukturę, przy czym zakłada się, że ta struktura może być dowolna, a poziomy zagnieżdżenia mogą być dowolnie głębokie.

Załóżmy, że chcemy wyświetlić wszystkie prymitywne (czyli nie tablice) elementy naszej tablicy. W tym przypadku do iteracji po takiej tablicy po prostu nie uda nam się użyć pętli, ponieważ tablica ma nieregularną strukturę i nieznany poziom zagnieżdżenia.

Za to do iteracji po takiej tablicy bardzo wygodnie będzie użyć rekurencji.

Na początek zróbmy funkcję, do której parametrem będziemy przekazywać naszą tablicę, a w funkcji zróbmy pętlę do iteracji po naszej tablicy:

php<?php
  function func($arr) {
    foreach ($arr as $elem) {
      echo $elem;
    }
  }
  
  func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>

Stworzona przez nas pętla będzie iterować tylko po elementach głównej tablicy. Czyli na początku wypisze 1, potem [2, 7, 8], a potem [3, 4, [5, [6, 7]].

Zróbmy teraz tak, aby w pętli rozróżniać elementy-prymitywy i elementy-tablice:

php<?php
  function func($arr) {
    foreach ($arr as $elem) {
      if (is_array($elem)) {
        // element - tablica
      } else {
        // element - prymityw
        echo $elem;
      }
    }
  }
  
  func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>

A teraz zróbmy tak, aby jeśli nasz element to tablica, funkcja wywoływała samą siebie, przekazując parametrem tę tablicę:

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

Dana jest wielowymiarowa tablica o dowolnym poziomie zagnieżdżenia, na przykład taka:

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

Za pomocą rekurencji wypisz wszystkie prymitywne elementy tej tablicy na ekran.