Rekurzija in večdimenzionalne strukture v PHP

Dano je večdimenzionalno poljubno polje na ravni gnezditve, na primer takšno:

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

Kot lahko vidite, ima to polje kompleksno strukturo, pri čemer se predpostavlja, da je ta struktura lahko poljubna in so ravni gnezditve lahko poljubno globoke.

Recimo, da želimo izpisati vse primitivne (to je, ne polja) elemente našega polja. V tem primeru preprosto ne moremo uporabiti zank za pregled takšnega polja, ker ima polje nepravilno strukturo in neznano raven gnezditve.

Vendar pa bo za pregled takšnega polja zelo priročno uporabiti rekurzijo.

Za začetek naredimo funkcijo, kamor bomo kot parameter podali naše polje, v funkciji pa naredimo zanko za pregled našega polja:

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

Zanka, ki smo jo naredili, bo pregledovala le elemente glavnega polja. To pomeni, da bo najprej izpisala 1, nato [2, 7, 8], in nato [3, 4, [5, [6, 7]].

Zdaj pa ločimo v zanki primitivne elemente in elemente-polja:

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

In zdaj naredimo tako, da če je naš element - polje, funkcija pokliče samo sebe, in poda kot parameter to polje:

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

Dano je večdimenzionalno polje poljubne ravni gnezditve, na primer takšno:

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

Z uporabo rekurzije izpišite vse primitivne elemente tega polja na zaslon.