Autor | Zpráva | ||
---|---|---|---|
papirek Profil * |
#1 · Zasláno: 27. 8. 2007, 17:23:28
zdravim vsechny, potreboval bych funkci ktera mi zjisti pocet souboru (nebo fotek) ve slozce kterou si urcim, nebo nejaky zpusob jak to zjistit jinak... predem MOC dekuji za pomoc...
|
||
nightfish Profil |
#2 · Zasláno: 27. 8. 2007, 17:35:01
$dir = opendir("adresar"); |
||
papirek Profil * |
#3 · Zasláno: 27. 8. 2007, 17:39:11
Dekuji moc si mi pomohl ale jen tak pro zajimavost zatim sem vymyslel toto fungovalo by to taky ??
$dir = "adresar"; $soubory = scandir($dir); $pocetsouboru = count($soubory); echo "Počet souborů: ".$pocetsouboru |
||
nightfish Profil |
#4 · Zasláno: 27. 8. 2007, 17:45:15
ale jen tak pro zajimavost zatim sem vymyslel toto fungovalo by to taky ??
scandir nerozlišuje soubory a adresáře, takže kdyby byl jenom adresář s fotkama, tak by to zřejmě fungovalo (tedy pro prázdný adresář by to vrátilo 2, kvůli souborům . a ..) |
||
Časová prodleva: 6 let
|
|||
smiesek Profil |
#5 · Zasláno: 21. 3. 2013, 20:21:52
nightfish, nightfish:
Všude tu čtu pouze návo na výpis počtu souborů z jednoho adresáře, mě by zajímalo jak docílit toho, aby se mi zobrazil počet i z podadresářů/složek. Mám např. složku barvy, kde jsou další podsložky jako červená, modrá, bílá... a já chci, aby se mi spočítal celkový počet souborů z těch všech 3 složek. |
||
Virtus Profil |
No tak stačí vzít ten kód co napsal nightfish v [#2] a udělat z něj rekurzivní funkci, asi nějak takhle:
function getCountFiles($adresar){ $dir = opendir($adresar); $pocetSouboru = 0; while (($f = readdir($dir)) !== false) { if ($f == "." || $f == "..") continue; if (is_file($adresar.$f)){ $pocetSouboru++; } elseif( is_dir($adresar.$f) ) { $pocetSouboru += getCountFiles($adresar.$f); } } closedir($dir); return $pocetSouboru; } echo "Počet souborů: ".getCountFiles('adresar'); |
||
Alphard Profil |
#7 · Zasláno: 21. 3. 2013, 20:36:15
Virtus [#6]:
Do postupně sestavované cesty bude třeba nacpat nějaká lomítka. Navíc bude asi lepší použít nějakou funkci, která prohledává subadresáře nativně. |
||
Virtus Profil |
Alphard [#7]:
Souhlasím, navíc by to asi chtělo spíš nějakou class než obyčejnou funkci, přece jen, pokud pracuju se soubory asi mně zajímá víc než jejich počet většinou, ale třeba i kolik jich je v konkrétních složkách, jaký mají práva, nebo zda se nejedná o symlinky atd. A ještě si nejsem jistý tou funkcí is_dir() pro kontrolu jestli se jedná o adresář, zda jde takhle vůbec použít viz. php.net: var_dump(is_dir('bogus_dir/abc')); |
||
ShiraNai7 Profil |
Co takhle?
$item je instance SplFileInfo.
edit: zjednoduseno :) $adresar = './adresar'; $pocetSouboru = 0; foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($adresar)) as $item) { if($item->isFile()) { ++$pocetSouboru; } } var_dump($pocetSouboru); // vypise pocet souboru |
||
Majkl578 Profil |
[#9] ShiraNai7:
I to by se dalo zjednodušit (resp. zapsat bez foreache a přičítání proměnné): $pocet = iterator_count( new CallbackFilterIterator( new RecursiveIteratorIterator( new RecursiveDirectoryIterator($adresar) ), function ($i) { return $i->isFile(); } ) ); |
||
Časová prodleva: 11 let
|
0