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

Цикълът, който направихме, ще обхожда само елементите на основния масив. Тоест първоначално той ще изведе 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]]];
?>

С помощта на рекурсия изведете всички примитивни елементи на този масив на екрана.