Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Unterordner aus Ordner rekursiv anzeigen lassen
Antwort
 
Themen-Optionen
Alt 10.09.2007, 17:50   Nach oben    #1
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 473
Standard Unterordner aus Ordner rekursiv anzeigen lassen

Hallo zusammen,

ich wollte mal fragen, wie ich am besten alle Unterordner eines Ordners in ein Array bekomm?

Das Ergebnis sollte so aussehen:
Code:
Array
(
    [0] => aktuell
    [1] => inc
    [2] => kontakt
    [3] => was
    [4] => Array
            (
                [0] => was // Der Überordner
                [1] => ag
                [2] => unterricht
            )
    [5] => wer
    [6] => Array
            (
                [0] => wer // Der Überordner
                [1] => eltern
                [2] => lehrer
                [3] => schueler
            )
)
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.09.2007, 21:24   Nach oben    #2
dago
Erfahrener Benutzer
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Mit scandir kannst du sowas leicht bauen.

Aber darf ich fragen wozu du das benötigst? Ein Verzeichnis rekursive durchzuarbeiten sollte doch kein Problem sein. Ein Array wird da meist nicht benötigt.
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.09.2007, 21:55   Nach oben    #3
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 473
Standard

Ja, soweit bin ich auch schon, aber ich finde nichts, was mir nur die Unterordner angibt.
Einfach als Array alle Unterordner von einem Ordner.

1 - /
2 - /a
3 - /b
4 - /b/1
5 - /b/2/x
6 - /b/2/y
7 - /c

So in der Art.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz

Geändert von Jan (10.09.2007 um 22:50 Uhr).
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:46   Nach oben    #5
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 473
Standard

Ich will sie ja nicht erstellen, sondern in einem Array alle Ordner haben. Irgendwie häng ich da fest. Entweder er geht nur in einen Ordner, oder er zeigt mir nur die Ordner der ersten Ebene an.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:48   Nach oben    #6
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Zitat:
Zitat von Jan Beitrag anzeigen
Ich will sie ja nicht erstellen, sondern in einem Array alle Ordner haben.
Ich weiß. Aber das Prinzip der Rekursion ist da ja gleich!

Du kannst ja auch mal hier das anschauen und eben nur Verzeichnisse (is_dir()) abspeichern.

Liste aller Dateien
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 22:22   Nach oben    #7
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 473
Standard

Irgendwie pack ich es nicht.
Dachte das ich einfach ne foreach brauch die dann scandir ausführt und sich selber wieder aufruft.
Aber irgendwie hakt es an der Ausführung.

PHP-Code:
function get_dir($dir)
{
    
$sub_dir scandir($dir);
        foreach(
$sub_dir as $next_dir)
        {
            if(
strrchr($next_dir'.') != true)
            {
                    if(
is_file($next_dir) != true)
                    {
                        
$next $dir.'/'.$next_dir;
                        
$listarray[] = $dir.'/'.$next_dir;
                        
get_dir($next);
                    }
            }
        }
    return(
$listarray);

Ich komm nur in die erste Ebene, aber nicht weiter runter.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz

Geändert von Jan (11.09.2007 um 22:59 Uhr).
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 23:11   Nach oben    #8
dejan_spasic
Erfahrener Benutzer
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 168
Standard

Zitat:
Zitat von Jan Beitrag anzeigen
PHP-Code:
                    if(is_file($next_dir) != true)
                    {
                        
$next $dir.'/'.$next_dir;
                        
$listarray[] = $dir.'/'.$next_dir;
                        
get_dir($next);
                    } 
Ich komm nur in die erste Ebene, aber nicht weiter runter.
Der Rückgabewert von get_dir wird auch nirgendswo zugewiesen.
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 23:16   Nach oben    #9
bobby
Benutzer
 
Benutzerbild von bobby
 
Registriert seit: 09.03.2007
Ort: Nürnberg
Beiträge: 53
Standard

PHP-Code:
<?php
function getFiles($start_directory$parentfolder null) {
    
$files      scandir($start_directory);
    
$result    = (null == $parentfolder) ? array() : array($parentfolder);
    foreach(
$files as $file) {
        if(
$file != '.' && $file != '..') {
            
$path $start_directory DIRECTORY_SEPARATOR $file;
            if(
is_file($path)) {
                
$result[] = $file;    
            }
            else if(
is_dir($path)) {
                
$result[] = $file;
                
$result[] = getFiles($path$file);
            }
            else {
                
//foobar
            
}
        }
    }
    return 
$result;
}

print 
'<pre>';
print_r(getFiles('/home/christian/Entwicklung/web/testarea'));
print 
'</pre>';
?>
Der Rest dürfte nicht mehr also schwer sein. Zwei Fehler die oft gemacht werden:
  1. Bei is_dir() bzw. is_file() wird nur auf $file anstatt auf $path überprüft
  2. '.' und '..' werden nicht ausgeschlossen
bobby.

//edit: Ich bin einfach zu langsam, dann ist meine Antwort hinfällig.
//edit, die zweite: Dann kann ich auch den ganzen Quelltext posten

Geändert von bobby (11.09.2007 um 23:20 Uhr).
bobby ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 19:47   Nach oben    #10
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 473
Standard

Okay,
hab jetzt ein Ergebnis. ist kein schner Code, aber er klappt genau so wie ich es möchte.
PHP-Code:
function getFiles($start_directory$parentfolder null) {
    
$files      scandir($start_directory);
    
$result    = (null == $parentfolder) ? array() : array($parentfolder);
    foreach(
$files as $file) {
        if(
$file != '.' && $file != '..') {
            
$path $start_directory DIRECTORY_SEPARATOR $file;
            if(
is_file($path)) {
               
# $result[] = $file;
            
}
            else if(
is_dir($path)) {
                
#$result[] = $file;
                
$result[] = getFiles($path$file);
            }
            else {
                
//foobar
            
}
        }
    }
    return 
$result;
}

function 
dir_2_array($inhalt = array(), $p_dir '')
{
    global 
$result;
    foreach(
$inhalt as $file)
    {
        if(
is_array($file))
        {
            if(
is_array($p_dir))
            {
                
$p_dir '';
            }
            
$dir $p_dir.DIRECTORY_SEPARATOR.$file[0];
            
dir_2_array($file,$dir);
        }
        else
        {
            if(
is_array($p_dir))
            {
                
$p_dir '';
            }
            
$result[] = $p_dir.DIRECTORY_SEPARATOR;
        }
    }
    return 
$result;
}

$ordner dir_2_array(getFiles(JMG_INC_DIR.'templates/')); 
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Viele Bilder in einem Ordner => Ladezeitproblem heohni PHP-Programmierung 7 06.10.2006 23:25
Ordner rekursiv mit Java kopieren Xean Allgemeine Java-Programmierung 8 09.07.2006 22:45
[XAMPP] Ordner wird nicht angezeigt Ben Tools, Server, Betriebssysteme 7 16.05.2006 13:24
Prob. beim Ordner löschen X-Unity.de PHP-Programmierung 15 19.03.2006 11:27
Bild seperat laden und anzeigen phate Desktop-Applikationen und Grafik 0 31.05.2005 10:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:07 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44