Autor | Zpráva | ||
---|---|---|---|
gizmo Profil * |
#1 · Zasláno: 10. 8. 2005, 12:04:06
Nazdar!
Mám několik adresářů a v každém několik souborů. Potřebuji zjistit počet souborů v každém adresáři. Mám PHP 4, takže scandir() nefunguje |
||
WertriK Profil * |
#2 · Zasláno: 10. 8. 2005, 14:59:11
$adresar = OpenDir("adresar");
$soubor = Array(); while ($zaznam = ReadDir($adresar)) { if (!Is_Dir("adresar$zaznam")) { $soubor[] = $zaznam; } } CloseDir($adresar); $pocet_souboru = count($soubor); |
||
HubiPe Profil * |
#3 · Zasláno: 10. 8. 2005, 15:04:29
Co si udělat funkci která spočítá počet souborů ve složce, a pak pomocí rekurze projít vnořené adresáře (a další vnořené adresáře vnořených adresářů atd.). Udělat si pole do které jsou ukládány názvy souborů, a na konci je pomocí Count() spočítat?
|
||
Havel-st Profil * |
#4 · Zasláno: 10. 8. 2005, 15:05:13
tohle by mohlo fungovat:
<?php $dir = "./adresar/"; $handle=opendir($dir); while ($folder = readdir($handle)) { $base = basename($folder); if ($base!="." && $base!=".." && is_dir($dir.$folder)) { echo $folder." - ".count(glob($dir.$folder."./*.*"))." soub.<br>\n"; } } ?> samotné počítání souborů je např: echo count(glob("./adresar/prvni/*.*")); |
||
gizmo Profil * |
#5 · Zasláno: 10. 8. 2005, 16:35:48
Díky moc!
WertriKovo řešení funguje naprosto spolehlivě. Ještě jednou díky |
||
Robotus Profil * |
#6 · Zasláno: 10. 8. 2005, 19:10:06
function countFiles($dir) {
echo "reading ".$dir."<br/>"; $adresar = opendir($dir); $count = 0; while (($zaznam = readdir($adresar))!==false) { if (!is_dir($dir.'/'.$zaznam)) { $count++; } else { if ($zaznam!="." && $zaznam!="..") { $count += countFiles($dir.'/'.$zaznam); } } } closedir($adresar); return $count; } echo countfiles("./web"); kdyby nekdo s rekurzi:) |
||
Thorai Profil * |
#7 · Zasláno: 10. 8. 2005, 20:10:21
ahoj, nenapsal byste mi někdo prosím skript, který uloží všechny adresáře
i jejich podadresáře a podpodadresáře,....atd do pole ? |
||
Robotus Profil * |
#8 · Zasláno: 10. 8. 2005, 21:06:12
<?
/*Zdroj: http://php.ftp.cvut.cz/manual/cs/function.array-merge.php#51121*/ function multimerge ($array1, $array2) { if (is_array($array2) && count($array2)) { foreach ($array2 as $k => $v) { if (is_array($v) && count($v)) { $array1[$k] = @multimerge($array1[$k], $v); } else { $array1[$k] = $v; } } } else { $array1 = $array2; } return $array1; } function countFiles($dir) { echo "reading ".$dir."<br/>"; $adresar = opendir($dir); while (($zaznam = readdir($adresar))!==false) { if (!is_dir($dir.'/'.$zaznam)) { $adresare[$dir][] = $zaznam; } else { $current = $dir.'/'.$zaznam; if ($zaznam!="." && $zaznam!="..") { $podadresar = countFiles($dir.'/'.$zaznam); $adresare = multimerge($adresare, $podadresar); } } } closedir($adresar); return $adresare; } $arr = countfiles($adresaaaaar); print_r($arr); ?> snad to bude ono;) |
||
Thorai Profil * |
#9 · Zasláno: 10. 8. 2005, 21:40:13
to Robotus
Díky moc! |
||
Časová prodleva: 8 měsíců
|
|||
Anonymní Profil * |
#10 · Zasláno: 28. 3. 2006, 17:55:24
$adresar = OpenDir("adresar");
$soubor = Array(); while ($zaznam = ReadDir($adresar)) { if (!Is_Dir("adresar$zaznam")) { $soubor[] = $zaznam; } } CloseDir($adresar); $pocet_souboru = count($soubor); Zkoušel jsem to, ale jaksi mi to spočítalo, že ve složce jsou dva soubory, ale opticky tam žádný nebyl. Opravdu tato funkce vždy "přičte" dvojku, nebo to je proměnlivé? Pokud to je opravdu na "pevno", pak je to v pohodě (odečtu 2 a mám pokoj). |
||
WanTo Profil |
#11 · Zasláno: 28. 3. 2006, 18:10:51
Anonymní
Nezapočítává se náhodou . a .. ? |
||
koudi Profil |
#12 · Zasláno: 28. 3. 2006, 18:37:49
Jo, rozhodně to bude . a ..
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0