У меня возникла эта проблема.Рекурсивная функция PHP - увеличение общих значений
Предположим, что у меня есть серия папок внутри этих папок, у них есть неограниченное количество подпапок, и вы можете иметь неограниченное количество файлов в этом.
Используя Recusion, я пытаюсь получить количество всех файлов, которые существуют в подкаталогах, а также получить общее количество файлов из подзаголовка.
Я использую следующие:
$SubSectionTotalCount = 0;
$SubSectionComplete = 0;
function GetStats($child, $groups, $progress, $resCount, $complete)
{
foreach($child->children as $childElement)
{
if($childElement->resources != null)
{
foreach($childElement->resources->groups as $groupss)
{
if(Check($groupss->id, $groups))
{
if(array_key_exists($childElement->parent_id, $progress))
{
if(array_key_exists($childElement->resources->id, $progress[$childElement->parent_id]['tasks']))
{
$complete++;
}
}
$resCount++;
var_dump($resCount);
}
}
}
GetStats($childElement, $groups, $progress, $resCount, $complete);
}
}
Я в настоящее время есть 4 секции (которые поэтому resCount
должны напечатать 4), но вместо этого, я получаю:
int 1
int 2
int 3
int 2
Если я не увеличиваем переменные и только var_dump("getting here")
Я получаю следующее:
Getting here
Getting here
Getting here
Getting here
Итак, рекурсия работает, но я не понимаю, почему приращение не создает желаемый результат?
Если вы рекурсии через каталоги, которые вы должны взглянуть на некоторых из РНР построенный в классах, например ['РекурсивныйDirectoryIterator'] (http://php.net/manual/en/class.recursivedirectoryiterator.php), который помогает в этом. –