PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 30-09-2009 19:21:32

Thomas
Membre
Inscription : 11-06-2009
Messages : 15

[Résolu] Compter dans un dossier

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

#2 01-10-2009 08:37:56

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Compter dans un dossier

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

#3 01-10-2009 09:10:29

Thomas
Membre
Inscription : 11-06-2009
Messages : 15

Re : [Résolu] Compter dans un dossier

Oui c'est toujours le cas, j'ai vérifié.

Hors ligne

#4 01-10-2009 09:41:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Compter dans un dossier

Alors voilà un début de code dont tu peux t'inspirer

<?php
$compte=array();
foreach (glob("*") as $filename) {
    $rad=substr($filename,0,3);
    if(!isset($compte[$rad])){$compte[$rad]=0;}
    $compte[$rad]++;
    }
print_r($compte);

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

#5 02-10-2009 17:16:19

Thomas
Membre
Inscription : 11-06-2009
Messages : 15

Re : [Résolu] Compter dans un dossier

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


<?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

#6 02-10-2009 18:09:07

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Compter dans un dossier

<?php
$list=array();$compte=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);

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

#7 02-10-2009 19:28:55

Thomas
Membre
Inscription : 11-06-2009
Messages : 15

Re : [Résolu] Compter dans un dossier

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 big_smile
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

#8 02-10-2009 19:52:09

Thomas
Membre
Inscription : 11-06-2009
Messages : 15

Re : [Résolu] Compter dans un dossier

Finalement trouvé ma solution :

<?php

$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 ! big_smile

Hors ligne

Pied de page des forums