Dateien zählen mit Filter - php
Hallo,
ich habe ein Script am laufen, dass mir gute Dienste leistet und bestimmte Dateien zählt.
Nun bin ich kein IT-Fachmann, bastele aber gern und muss mein Script anpassen.
Bisher konnte ich einfach meine Dateien zählen.
Jetzt kommen aber verschiedene Dateien (3 Gruppen) zusammen, die sich nur aufgrund ihrer Größe unterscheiden: <=10kb, 20-30kb und >=100.
Nun möchte ich gerne die jeweilige Anzahl anzeigen und bin auch bei php soweit fündig geworden: function.count
Hier mein bisheriger Code:
Bisher arbeite ich mit while, muss aber nach Vorgabe bei php ein array nutzen, wobei hier die Einstellung (Filter) der Größen notwendig wäre (möglichst flexibel), denke ich ...
Wie ich hier vorgehen soll weiß ich nicht und würde mich daher über Hilfe freuen!
newline
ich habe ein Script am laufen, dass mir gute Dienste leistet und bestimmte Dateien zählt.
Nun bin ich kein IT-Fachmann, bastele aber gern und muss mein Script anpassen.
Bisher konnte ich einfach meine Dateien zählen.
Jetzt kommen aber verschiedene Dateien (3 Gruppen) zusammen, die sich nur aufgrund ihrer Größe unterscheiden: <=10kb, 20-30kb und >=100.
Nun möchte ich gerne die jeweilige Anzahl anzeigen und bin auch bei php soweit fündig geworden: function.count
Hier mein bisheriger Code:
<?php
$anzahl=0;
$verz=opendir (".");
while ($file = readdir ($verz)) {
if(strtolower(substr($file,-4))==".csv"){
$anzahl+=1;
}
}
closedir($verz);
echo "\n Es sind $anzahl Dateien vorhanden.\n";
?>
Bisher arbeite ich mit while, muss aber nach Vorgabe bei php ein array nutzen, wobei hier die Einstellung (Filter) der Größen notwendig wäre (möglichst flexibel), denke ich ...
Wie ich hier vorgehen soll weiß ich nicht und würde mich daher über Hilfe freuen!
newline
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665587
Url: https://administrator.de/forum/dateien-zaehlen-mit-filter-php-665587.html
Ausgedruckt am: 13.03.2025 um 19:03 Uhr
11 Kommentare
Neuester Kommentar

z.B.
Oder wenn du zusätzlich die Dateinamen in Arrays der jeweiligen Größen brauchst
<?php
$files = glob('*.csv');
$filesSmaller10KB = 0;
$files20to30KB = 0;
$filesBigger100KB = 0;
foreach($files as $file){
$size = filesize($file);
switch(true){
case ($size <= 1024 * 10):
$filesSmaller10KB++;
break;
case ($size >= 1024 * 20 && $size <= 1024 * 30):
$files20to30KB++;
break;
case ($size >= 1024 * 100):
$filesBigger100KB++;
break;
}
}
echo "Files smaller/equal to 10KB : $filesSmaller10KB <br>";
echo "Files between 20KB and 30KB : $files20to30KB <br>";
echo "Files bigger/equal 100KB : $filesBigger100KB <br>";
?>
<?php
$files = glob('*.csv');
$filesSmaller10KB = array();
$files20to30KB = array();
$filesBigger100KB = array();
foreach($files as $file){
$size = filesize($file);
switch(true){
case ($size <= 1024 * 10):
array_push($filesSmaller10KB,$file);
break;
case ($size >= 1024 * 20 && $size <= 1024 * 30):
array_push($files20to30KB,$file);
break;
case ($size >= 1024 * 100):
array_push($filesBigger100KB,$file);
break;
}
}
echo "<p style=\"font-weight:bold\">Files smaller/equal to 10KB : " . count($filesSmaller10KB) . "</p>";
echo "<pre>" . implode("<br>",$filesSmaller10KB) . "</pre>";
echo "<p style=\"font-weight:bold\">Files 20KB to 30KB : " . count($files20to30KB) . "</p>";
echo "<pre>" . implode("<br>",$files20to30KB) . "</pre>";
echo "<p style=\"font-weight:bold\">Files bigger/equal 100KB : " . count($filesBigger100KB) . "</p>";
echo "<pre>" . implode("<br>",$filesBigger100KB) . "</pre>";
?>

Statt dem von mir genutzten "switch"-Konstrukt kannst du hier als Alternative immer auch einfach ein If elseif elseif endif nutzen wenn du willst.
https://www.php.net/manual/de/control-structures.elseif.php
https://www.php.net/manual/de/control-structures.elseif.php
Zitat von @newline:
Eine Frage habe ich noch zu deinen Werten: 'case ($size <= 1024 * 10):'
Die Frage muss glaube ich lauten: Welche Änderungen muss ich für Bytes-Angabe anstatt KB-Angabe machen?
Also z.B. für 10b anstatt 10kb?
Eine Frage habe ich noch zu deinen Werten: 'case ($size <= 1024 * 10):'
Die Frage muss glaube ich lauten: Welche Änderungen muss ich für Bytes-Angabe anstatt KB-Angabe machen?
Also z.B. für 10b anstatt 10kb?
das wäre dann
$size <= 10

Zitat von @newline:
Eine Frage habe ich noch zu deinen Werten: 'case ($size <= 1024 * 10):'
Die Frage muss glaube ich lauten: Welche Änderungen muss ich für Bytes-Angabe anstatt KB-Angabe machen?
Also z.B. für 10b anstatt 10kb?
Als Anfänger als erstes immer das Manual zur Rate ziehen, dann sind solche Fragen überflüssig Eine Frage habe ich noch zu deinen Werten: 'case ($size <= 1024 * 10):'
Die Frage muss glaube ich lauten: Welche Änderungen muss ich für Bytes-Angabe anstatt KB-Angabe machen?
Also z.B. für 10b anstatt 10kb?
https://www.php.net/manual/de/function.filesize.php
Gibt die Größe einer Datei in Bytes zurück
Wobei hier ja eigentlich Mathe erste Klasse ausgereicht hätte 1KB = 1024 bytes
Falsch, das macht hier sehr wohl Sinn wenn du im Case individuell und nicht nur auf feste Werte prüfen willst! Wohl noch nie selbst ausprobiert 😉.