tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1858
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    emuume emuume ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Hallo,

    suche jetzt schon seit Stunden nach einer Möglichkeit wie im Titel angegeben. Ich finde immer nur die Suche nach Werten. Mein Array besitzt aber keine Werte, sondern nur Schlüssel und wieder Unterschlüssel (entspricht einer Ordnerstruktur mit Unterordnern).
    Nun möchte ich neue Unterordner einfügen, muss dazu aber die richtige Stelle (Schlüssel) im Array finden.
    Ich brauch also eine Funktion die der array_search entspricht, mir aber nicht den Pfad zu Werten, sondern den Pfad zu Schlüsseln gibt.

    Ich möchte ein Script schreiben, welches automatisch Ordner mit entsprechenden Unterordnern sammelt und die jeweiligen Pfade dann ausgibt. Da die Tiefen nicht bekannt sind, möchte ich das gerne rekursiv machen. Komme aber grad nicht weiter
     

  2. #2
    -GS-Master -GS-Master ist offline Mitglied Platin
    Registriert seit
    Sep 2005
    Beiträge
    705
    Liege ich da jetzt Falsch oder sind "Schlüssel" nicht auch "Werte" nur eben eine bestimmte Zahlencombi.?
     

  3. #3
    emuume emuume ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Nee, Schlüssel sind die Dinger in den eckigen Klammern. Also bei $ar[auto][bmw][reifen] will ich nach dem Schlüssel Reifen suchen und den Pfad bis dahin angezeigt bekommen.

    Mein Array ist sozusagen ein Baum ohne Blätter Ne Ordnerstruktur halt.
     

  4. #4
    -GS-Master -GS-Master ist offline Mitglied Platin
    Registriert seit
    Sep 2005
    Beiträge
    705
    Also wenn ich das dann richtig Verstehe soll dann deine Ausgabe so aussehen

    PHP-Code:
    [auto][bmw][reifen
     

  5. #5
    emuume emuume ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    genau

    Mir schwant Schlimmes... Kann es sein, dass ich dafür ganz viele verschachtelte Suchen durchlaufen lassen muss? Als erstes wird Ebene 1 durchsucht, bei Misserfolg Ebene 2 von Schlüssel 1, dann Ebene 2 von Schlüssel 2 usw... ?
     

  6. #6
    -GS-Master -GS-Master ist offline Mitglied Platin
    Registriert seit
    Sep 2005
    Beiträge
    705
    Ich weiß zwar wie du einzelne keys eines Arrays suchen kannst, aber hab jetzt noch ne Frage und zwar hat doch jeder Array, egal ob mehrdimensional oder nicht doch auch solch ein musster ...

    PHP-Code:
    echo $ar[mein][kleiner][test];
    //-->    Wert des Arrays ... 
    Demnach musst du ja so oder so einen Wert festlegen, oder liege ich da jetzt falsch ... erzeugst ja sonst nen "leeren" Array ...

    Ansonsten, schau dir mal das an ...
    http://us2.php.net/manual/de/function.array-keys.php
     

  7. #7
    emuume emuume ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Der Wert bleibt leer. Dort kommt ein leeres Array hin. Kann für den Wert auch "0" einsetzen, da der Wert ja uninteressant ist für mich. Die Schlüssel mit ihren Unterschlüsseln stellen eine Ordner(Baum)struktur dar. Und wenn es keine Unterordner mehr gibt, dann is Ende. Ich brauch die Werte also nicht.

    Deine Funktion gibt zwar alle Schlüssel, doch das nützt mir nichts. Ich weis ja, welche Schlüssel drinne sind, nur nicht wo.

    edit: boah das war ein Akt. Habe mich jetzt mit der rekursiven Funktion rumgeplagt, die mir die oben genannte Struktur erstellen soll. UND ich habs hingekriegt!! Das is der Hammer

    Wen der Code interessiert:
    PHP-Code:
    <pre>

    <?

    $path
    =".";

    function 
    sammle($path,$ordner){

        
    $templist=array();
        
    $handle    =    opendir($path);
        while (
    $file=readdir($handle)){
            if(
    $file!="."&&$file!=".."&&$file!="index.php"&&$file!="thumbs"&&is_dir($path."/".$file)){ #sammle ordnernamen
                
    array_push($templist,$file);
            }
            
        }
        
    closedir($handle);
        
        if (
    count($templist)!=0){
            
    $count=count($templist);
            for(
    $i=0;$i<$count;$i++){
                
                
    $ordner=array_shift($templist);
                
    $path.="/".$ordner;
                
    $add=sammle($path,$ordner);
                            
                if (
    is_array($add)) {
                    
    $array[$ordner]=$add;
                }
                else {
                    
    $array[$add]=array();
                    
                }
                
                
    $path=substr($path,0,strrpos($path,"/"));
                if(
    count($templist)==0){return($array);}
            }
        }
        return (
    $ordner);
    }

    $list=sammle($path,$ordner);
    print_r($list);
    ?>

    </pre>
    Das Script einfach in einen Ordner mit vielen verzweigten Unterordnern legen. Es liefert die Ordnerstruktur in einem Array als Baum. (Es ist natürlich an meine Bedürfnisse angepasst, u.U. muß die if-Abfrage bei "sammle ordnernamen" angepasst werden)
    Geändert von emuume (06.03.07 um 01:35 Uhr)
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 10.11.10, 13:12
  2. Mehrdimensionales nach Schlüssel sortieren
    Von IR-Bastian im Forum PHP
    Antworten: 2
    Letzter Beitrag: 14.07.10, 10:40
  3. Mehrdimensionales Array nach 2. Indizes sortieren
    Von Hockeyfan4444 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 03.09.08, 16:48
  4. Antworten: 10
    Letzter Beitrag: 28.02.08, 16:46
  5. Antworten: 0
    Letzter Beitrag: 10.01.08, 17:22