Ռեկուրսիա և բազմաչափ կառուցվածքներ 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]]];
?>

Օգտագործելով ռեկուրսիա, ցուցադրեք այս զանգվածի բոլոր պարզ տարրերը էկրանին: