| |
|
|
| | Помогите господа. я совсем запуталась. мне нужно подсчитатьФАЙЛЫ в 2 директориях. Естественно там есть вложеные директори с файлами.
Вот скрипт который я накатала. но в связи с тем что я плохо понимаю принципы рекрсии он выдает несуммированое значение. т. например 21222... а файлов как нетрудно догадаться девять....
function recurseTree($oIterator, $count){
while ($oIterator->valid()){
if ($oIterator->isDir() && !$oIterator->isDot()) {
if ($oIterator->hasChildren()) {
recurseTree($oIterator->getChildren(), $count);
}
} elseif ($oIterator->isFile()) {
$count++;
}
$oIterator->next();
}
echo $count;
}
recurseTree(new recursiveDirectoryIterator('test'), '0');
|
| |
| |
|
|
| |
|
|
| |
для: Равечка
(07.08.2006 в 19:12)
| | | Дело в том, что у вас echo $count; выполняется несоколько раз во время рекурсивного спуска, вместо
напишите
<?php
echo $count."<br>";
?>
|
результат будет более понятным. | |
| |
|
|
| |
|
|
| |
для: Равечка
(07.08.2006 в 19:12)
| | | А ещё лучше здесь использовать $count не в качестве параметра, а объявить эту переменную глобальной при помощи ключевого слова global.
<?php
function recurseTree($oIterator){
global $count;
while ($oIterator->valid()){
if ($oIterator->isDir() && !$oIterator->isDot()) {
if ($oIterator->hasChildren()) {
recurseTree($oIterator->getChildren());
}
} elseif ($oIterator->isFile()) {
$count++;
}
$oIterator->next();
}
}
$count = 0;
recurseTree(new recursiveDirectoryIterator('test'));
echo $count;
?>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(07.08.2006 в 19:35)
| | | блин. после С++ забываешь что такое глобальные переменные :) спасибо большое. | |
| |
|
|