Рекурсия и многомерные структуры в 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]]]]);
?>

Сделанный нами цикл будет перебирать только элементы основного массива. To есть вначале он выведет 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]]];
?>

С помощью рекурсии выведите все примитивные элементы этого массива на экран.