Нужна помощь с обходом массива. Рекурсия.

Помогите написать функцию foreach чтоб обходила массив и каждый раз возращала массив . Хочу понять как это работает и сам потом в качестве обучения поиграюсь .

PHP:
  1. <?php
  2. function getKeyVals($arr, $key) {
  3.     foreach ($arr as $k => $v) {
  4.         if ($k === $key) {
  5.           yield $v;
  6.         }
  7.         else if (is_array($v)) {
  8.             foreach (getKeyVals($v, $key) as $v2) {
  9.                 yield $v2;
  10.             }
  11.         }
  12.     }
  13. }
  14.  
  15. $data = [
  16.         [
  17.             ‘name’ => ‘A’,
  18.             ‘value’ => 1
  19.         ],
  20.         [
  21.             ‘name’ => ‘B’,
  22.             ‘value’ => 2
  23.         ],
  24.         [
  25.             ‘name’ => ‘C’,
  26.             ‘value’ => [
  27.                 ‘name’ => ‘X1’,
  28.                 ‘value’ => 3
  29.                 ],
  30.                 [
  31.                 ‘name’ => ‘X2’,
  32.                 ‘value’ => 4
  33.                 ],
  34.                 [
  35.                 ‘name’ => ‘x3’,
  36.                 ‘value’ => 5
  37.                 ],
  38.         ]
  39.     ];

Думаю можно сделать через for , но это он будет бесконечно же так вызывать как я понимаю

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *