@Drumsid

Как работает рекурсивная функция php?

подскажите возможно так сделать? Не могу разобраться как это работает ?
$arr = [1,2,3,[11,12,13],5,6,7,8];

function myCount($arr, $deep = 1)
{
  $res = "";
  // $x = $deep;
  foreach($arr as $key => $val){
    if (is_array($val)) {
      $tmp = myCount($val, $deep += 1);
      $res .= $tmp . " - ";
    } else {
      $res .= $val * $deep . " - ";
    }
  }
  return $res;
}

print_r(test($arr)); // 1 - 2 - 3 - 22 - 24 - 26 -  - 10 - 12 - 14 - 16 -


Вот тестовая функция где я опыты ставлю.
При запуске функции myCount переменная deep = 1, во время рекурсивного вызова функции myCount переменная deep увеличивается на 1. А дальше, я ожидаю что выходя из внутреннего массива [11,12,13] переменная $deep станет снова единицей. Но она остается двойкой! А мне надо чтоб $deep всегда в каждой функции не менялся. Не важно сколько бы уровней был массив . Не пойму такое возможно реализовать? Киньте ссылку где посмотреть. почитать?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
0xD34F
@0xD34F
во время рекурсивного вызова функции myCount переменная deep увеличивается на 1

Нечего её увеличивать.

Убрать =, вот здесь:

$deep += 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
anton_reut
@anton_reut
Начинающий веб-разработчик
Рекурсивная функция это по сути как некая саморастущая башня и в момент когда башня перестает расти (рекурсия достигает максимального уровня вложенности), эта башня начинает рушится (все функции выполняются каскадом начиная с самой "глубокой").

Видел как в фильме "Интерстеллар" в конце многомерное пространство-комната начинает "сворачиваться" обратно? Вот примерно также:
og_og_1459851795211825555.jpg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы