Recursión y estructuras multidimensionales en PHP

Tenemos un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Como puedes ver, este array tiene una estructura compleja, y se supone que esta estructura puede ser arbitraria y los niveles de anidamiento pueden ser tan profundos como se desee.

Supongamos que queremos mostrar en pantalla todos los elementos primitivos (es decir, que no son arrays) de nuestro array. En este caso, para recorrer dicho array simplemente no podremos usar bucles, porque el array tiene una estructura irregular y un nivel de anidamiento desconocido.

Sin embargo, para recorrer dicho array será muy conveniente usar recursión.

Para empezar, crearemos una función, a la cual pasaremos nuestro array como parámetro, y dentro de la función crearemos un bucle para recorrer nuestro array:

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

El bucle que hemos creado solo recorrerá los elementos del array principal. Es decir, primero mostrará 1, luego [2, 7, 8], y luego [3, 4, [5, [6, 7]].

Ahora, en el bucle, separaremos los elementos primitivos y los elementos que son arrays:

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

Y ahora hagamos que si nuestro elemento es un array, la función se llame a sí misma, pasando este array como parámetro:

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

Dado un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Mediante recursión, muestra todos los elementos primitivos de este array en pantalla.