array: Paad des ersten Ordners von mehreren ausgeben

fx001

Erfahrenes Mitglied
Hallo,

ich versuch ne ganz simple Funktion zu erstellen ... aber schaffs net ...

ich möchte, dass in den Ordner ./hallo/
geschaut wird. in diesem Ordner liegen ein oder mehr Ordner.
Ich möchte jetzt nicht die ganze Liste aller Ordner anzeigen lassen, sondern nur den Pfad zu dem alphabetisch ersten Ordner in ./hallo/

hoffe jemand kann mir helfen.

Vielen Dank im Voraus!
 
So etwas (ungetestet!):
PHP:
function GetFirstDir($path)
{
  $DirContent = scandir($path);
  
  foreach ($DirContent as $Item)
  {
    if (is_dir($Item))
      return $path."/".$Item;
  }
}

$FirstDir = GetFirstDir("./hallo/");

[phpf]scandir[/phpf] sortiert automatisch den Ordnerinhalt alphabetisch.
 
Hallo, die Funktion läuft prima, ich habe da noch eine Frage:

In dem Orner .hallo/
liegen Ordner die mit "kat1_" "kat2_" und "kat3_" beginnen.
Kann man die Funktion so umstellen, dass jeweils nur der Pfad der ersten Datei von "kat1_" bzw. "kat2_" bzw. "kat3_" ausgegeben wird?
 
Nicht ganz,
die Ordner im Ordner ./hallo/ heißen z.B. kat1_Testprojekt oder kat3_neuesProjekt. Also es gibt 3 Kategorien.
Ich will dass die Funktion den alphapetisch ersten Ordnerpfad mit dem Beginn kat1_
den alphabetisch ersten Ordnerpfad mit dem Beginn kat2_
den alphabetisch ersten Ordnerpfad mit dem Beginn kat3_
ausgeben kann.
 
Sorry, dass ich dich immer noch nur teilweise verstehe, aber meinst du sowas:
PHP:
function GetKatDirs($path)
{
  $DirContent = scandir($path);

  $FoundItems = array();  

  foreach ($DirContent as $Item)
  {
    if (strtolower(substr($Item,0,5))=="kat1_" || strtolower(substr($Item,0,5))=="kat2_" || strtolower(substr($Item,0,5))=="kat3_")
    {
       $FoundItems[] = $path."/".$Item;
    }
  }
  return $FoundItems;
}

$KatDirs = GetKatDirs("./hallo/");

Wenn man im Ordner hallo die Ordner (nach alphabetischer Reihenfolge) kat1_..., kat2_... und kat3_... hat, dann werden die ausgegeben.

(!) Wenn du jetzt die Funktion für andere Ordner umbauen willst, würde ich dir empfehlen ein Array mit den Präfixen der Ordner zu machen:
PHP:
$Prefixes = array("kat_1", "kat_2", "kat_3");
...
if (in_array(strtolower(substr($Item,0,5)), $Prefixes)
  $FoundItems[] = $path."/".$Item;


PS: Du kannst die Funktion strtolower auch entfernen, ich schrieb sie nur hin, damit es keine Probleme mit der Groß/Kleinschreibung gibt, wenn es z.B. KAt3_ heißt.
 
; ) Ach kein Problem, ich glaub eher dass ich mich nicht ganz eindeutig ausgedrückt habe.
Hintergrund der ganzen Aktion ist, dass es 3 Kategorien auf der späteren HP gibt. Wenn man jetzt z.B. beim surfen auf Kategorie 1 klickt, soll automatisch das erste Projekt mitgeöffnet werden.
Ich habe drei Kategorien die als Ordner kat1_* kat2_* kat3* in dem Oderner ./hallo/ liegen.
Aus diesem Grund brauch ich den Pfad zu dem ersten Projekt der einzelnen Kategorien.
Sprich, wenn man auf Kategorie 1 klickt, soll in ./hallo/ der Pfad zum alphabetisch ersten Projekt der ganzen Projekte angezeigt werden die mit den 5 Buchstaben kat_1* beginnen. Usw.

Vielen Dank dass Du dir die Mühe machst mich verstehen zu wollen ; )
 
Zuletzt bearbeitet:
Achso, jetzt verstehe ich dich (Glaube ich zumindest :D).

Die Funktion von "oben" habe ich kurz so abgewandelt:

PHP:
function GetCategoryDirs($path)
{
  $CategoryPrefixes = array("kat1_","kat2_","kat3_");
  $DirContent = scandir($path);

  $FoundItems = array();  

  foreach ($DirContent as $Item)
  {
    if (in_array(strtolower(substr($Item,0,5)), $CategoryPrefixes)
    {
       $FoundItems[] = $path."/".$Item;
    }
  }
  return $FoundItems;
}

$CatDirs = GetCategoryDirs("./hallo/");

Edit: Weil es öfters zu Fragen bzgl. Ordner/-inhalte und PHP gibt, habe ich jetzt eine PHP-Klasse veröffentlicht: TCachedDirScanner.
Wenn du willst, kannst du sie auch nutzen! :)
 
Zuletzt bearbeitet:
Hey vielen Dank sehr lehrreich die ZIP mit den Kommentaren!

Wenn ich die dritte Zeile so abändere, wird mir dann der Pfad für den alphabetisch ersten ordner aller kat1_* Ordner ausgegeben?

$CategoryPrefixes = array("kat1_");
 
Zurück