Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour, j'aimerais compter le nombre de fichiers dans un dossier (jusque là rien de bien compliqué) mais en fonction du nom qu'il porte.
Je m'explique :
J'ai un dossier /critique/ avec a l'intérieur plusieurs fichiers dont en général les 3 premières lettres sont les mêmes, du genre aab1, aab2, aab3, abb1, abb2, abb3...
J'aimerais compter chaque "série" de fichier séparément, sachant que les fichiers sont amenés a s'accroitre
exemple dans un array :
aab >12
abb>8
...
Une solution était de faire un glob sur chaque début de mon fichier et faire un count ensuite, mais c'est trop lourd.
Je ne sais pas si c'est faisable ou non. Je suis preneur de toute nouvelle idée.
Hors ligne
Saluton,
Tout va dépendre du critère de regroupement, s'il est fixe, comme présenté, toujours les 3 premiers caractères du nom de fichier, ça peut être relativement simple.
Mais est-ce vraiment le cas ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oui c'est toujours le cas, j'ai vérifié.
Hors ligne
Alors voilà un début de code dont tu peux t'inspirer
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci bien pour ta réponse je vais m'empresser de tester ca.
Sinon j'avais commencé dans le bon sens, peut être pas aussi bien optimisé.
Je re-edit, car ton code me compte tout les fichiers
En adaptant ton code et le mien j'arrive a ca
<?php
$list=array();
foreach (glob('/critique/*.php') as $files ) {
$files=basename($files, ".php");
$files=substr($files, 0,3);
$list[] = $files;
natcasesort($list);
if(!isset($compte[$files])) {$compte[$files]=0;}
$compte[$files]++;
print_r($compte);
}
?>
Là, il m'affiche des kilometres de lignes pour chaque fichier, il associe tous les fichiers du dossier.
Seule la derniere "passe" me compte valablement pour chaque ensemble de fichier le nombre exact avec comme resultat
Array ( [aab] => 9 [aac] => 32 [aad] => 12
Dernière modification par Thomas (02-10-2009 17:56:01)
Hors ligne
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
C'est pas mieux...
En fait dés qu'il a finit une série de ficheirs, il me l'a rajoute a la prochaine passe, c'est pour ca qu'a la fin j'avais l'impression que c'etait mieux
ca donne donc : Array ( [aab] => 9) et ensuite il rajoute Array ( [aab] => 9 [aac] => 32) ainsi de suite...
Il faudrait arriver a "différencier" une série d'une autre, si les 3 premiers mots sont identiques on les compte jusqu'à temps qu'on en trouve, après on passe a la série suivante
Hors ligne
Finalement trouvé ma solution :
$list=array();
foreach (glob('/critique/*.php') as $files ) {
$files=basename($files, ".php");
$files=substr($files, 0,3);
$list[] = $files;
natcasesort($list);
}
$nombre=array_count_values($list);
print_r($nombre);
?>
C'etait tout bête !
Hors ligne
Pages :: 1