Intereting Posts
URL-адрес в качестве параметров URL-адреса – проблема с «&» "Ошибка анализа: синтаксическая ошибка, неожиданный T_STRING" Отображение количества посетителей Google Analytics на веб-сайте PHP SOAP Перенос файлов 301 Перенаправление со старого URL не работает (prestashop) Будет ли выполняться весь код после перенаправления заголовка в PHP? .htaccess запретить файлы в подпапках Какое лучшее решение для получения следующего и предыдущего месяца с данной даты php Пакетная обработка PHP: отправка флажков и значений радио строк таблицы вместе Как удалить файл на стороне клиента с помощью PHP? Как получить данные POST из API передачи файлов PhoneGaps предотвратить использование объекта PHP из автоматического литья Имитировать конструкцию языка php-массива или проанализировать с помощью регулярного выражения? $ _COOKIE , похоже, не отражает изменений после установки pthreads для PHP не выполняет параллельные потоки в Apache

Некоторые проблемы с переходом от одной функции к другой в цикле в php

я заметил проводное поведение php, когда делал что-то вроде

приведенный ниже код пытается перебрать все массивы в multiarray, и он должен вернуть $ n, когда он больше не является массивом.
в основном счетчик для величин.

<?php //some random values multiarray $arrays[1][2][3][5] = '1'; $arrays[1][2][3] = '1'; $arrays[1][2][3][4] = '1'; $arrays[3][6][3][1][5] = '2'; function second_func($array, $n)//adding $n then returning to 1st func { $n++; first_func($array, $n); } function first_func($arrays, $n = 0)//checking if array then 2nd func, if not then return. { if(is_array($arrays)) { foreach($arrays as $array)second_func($array, $n); }else { echo $n; //working return $n; //not working }; } $result[] = first_func($arrays); print_r($result);//nothing here 

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

Я помню, что у меня была аналогичная функция для удаления файлов кеша, и в итоге я получил чистый жесткий диск или аналогичную функцию для создания файла, и у меня были бы файлы в случайных папках по hd.

не проверял для подобных quastions, не может сформулировать quastion право.

Solutions Collecting From Web of "Некоторые проблемы с переходом от одной функции к другой в цикле в php"

Проблема с вашим кодом заключается в том, что функция first_func не всегда возвращает значение, только если аргумент не является массивом. Но так как вы называете это изначально аргументом массива, этот конкретный вызов ничего не возвращает, и это объясняет пустой вывод, который вы получаете. Таким образом, даже когда вы вызываете функцию рекурсивно (через second_func ), вы все равно должны что-то возвращать.

Если я правильно понимаю, вы хотите получить выход на «лист» в дереве вложенных массивов: для каждого листа должна быть выведена его глубина в дереве.

Вот как вы могли это сделать:

 function first_func($arrays, $n = 0) { if(is_array($arrays)) { $result = []; foreach($arrays as $array) $result = array_merge($result, first_func($array, $n+1)); } else { $result = [$n]; } return $result; } 

Это вернет массив целых чисел, где каждое целое число представляет глубину конкретного листа в данных.

Обратите внимание, что я удалил second_func , так как это довольно тривиально. Запись first_func($arrays, $n+1) не менее ясна, чем second_func($array, $n) . Если вы хотите сохранить second_func , то обязательно верните значение:

 function second_func($array, $n) { $n++; return first_func($array, $n); } 

Для этих данных:

 $arrays = [ 1 => [ 2 => [ 3 => "1 1" ] ], 3 => [ 6 => [ 3 => [ 1 => [ 5 => "2" ] ] ] ] ]; 

… приведенный выше код вернется:

 [3, 5] 

Который может быть отформатирован как 35:

 echo implode("", first_func($arrays));