Ricorsione e strutture multidimensionali in PHP

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Come puoi vedere, questo array ha una struttura complessa, e si presuppone che questa struttura possa essere arbitraria e i livelli di annidamento possono essere profondi a piacere.

Supponiamo di voler visualizzare a schermo tutti gli elementi primitivi (cioè non array) del nostro array. In questo caso, per iterare su un tale array non potremo semplicemente utilizzare i cicli, poiché l'array ha una struttura irregolare e un livello di annidamento sconosciuto.

Tuttavia, per iterare su un tale array sarà molto comodo utilizzare la ricorsione.

Per iniziare, creiamo una funzione, a cui passeremo il nostro array come parametro, e all'interno della funzione creiamo un ciclo per iterare il nostro array:

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

Il ciclo che abbiamo creato itererà solo sugli elementi dell'array principale. Cioè all'inizio stamperà 1, poi [2, 7, 8], e poi [3, 4, [5, [6, 7]].

Ora, all'interno del ciclo, separiamo gli elementi primitivi dagli elementi array:

php<?php
  function func($arr) {
    foreach ($arr as $elem) {
      if (is_array($elem)) {
        // l'elemento è un array
      } else {
        // l'elemento è un primitivo
        echo $elem;
      }
    }
  }
  
  func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>

E ora facciamo in modo che se il nostro elemento è un array, la funzione richiami sé stessa, passando come parametro questo array:

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

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Utilizzando la ricorsione, visualizza tutti gli elementi primitivi di questo array a schermo.