Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Level im Array bestimmen

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.02.2004
    Beiträge
    54

    Level im Array bestimmen

    Hallo,

    ich habe folgendes Problem.
    Ein mehrdimensionales Array wird per foreach durchsucht.

    Bsp. für's Array:

    PHP-Code:
    $navigation = array (
                                  
    => array ("name" => "Home",
                                                  
    "href" => "home/home.php"),
                                  
    => array ("name" => "Links",
                                                  
    "href" => "links/links.php",
                                                  
    "sub" => array ( 21 => array (....          
                                                                                         array...))),
                                  
    => array ("name" => "Kontakt",
                                                  
    "href" => "contact/contact.php")); 
    Die Funktion, die das Array durchsucht ist rekursiv und soll nur dann den Array-Inhalt ausgeben, wenn das Array ein Sub-Array ist. Vor allem soll nur das Sub-Array ausgegeben werden.

    Der Quelltext dazu:

    PHP-Code:
    function getArrayContent ($navigation$level) {
        
    $path $this->getSelectedPath();
        
    $active = ($id == $_SESSION['id']) || ((isset($path[$level])) && ($path[$level] == $id)) ? true false;
        foreach (
    $navigation as $id => $entry) {
            if (
    $level) {
                echo 
    "....";
            } 
    // if
        
    if ($active && isset($entry['sub'])) {
           
    $this->getSubNavigation ($entry['sub'], $level 1);
        } 
    // if

    Also soll er wirklich nur dann was ausgeben, wenn er sich momentan im Unter-Array befindet. Foreach hat aber die Eigenheit, ins Unter-Array abzusteigen und dann den Rest aus dem Ober-Array zu lesen.

    Weiß jemand Rat?

    Viele Grüße,

    Jan

  2. #2
    spoensche
    Gast
    Hat das parent array eine nummerischen index (test[1])?
    Ansonsten würde ich sagen so:
    for ($i=0;$i<sizeof($navigation);$i++) {
    if (is_array($navigation[$i])) {
    foreach ($navigation as $nav)
    echo $nav;
    }
    }

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.02.2004
    Beiträge
    54
    Hallo spoensche,

    naja, die Indizes sind so, wie oben beschrieben. Also [

    PHP-Code:
    $navigation = array (=> array ("name" => "Home",
                                                
    "href" => "home.php"),
                                
    =>  array (....)
                                                 
    ... 
    Das Problem ist, dass er zwar erkennt, wenn ein Sub-Array auftritt, aber nachdem er das durchlaufen hat, wieder ins Parent zurückkehrt und den Rest von dort ausgibt.

    Ich möchte also, dass, wenn er im 2. Array-Level ist, nur das 2. Array-Level ausgibt und sonst keins.

    Deine Idee funktioniert da leider nicht wie gewünscht.

    Viele Grüße,

    Jan

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.02.2004
    Beiträge
    54
    Ok, ich habs nun hinbekommen, allerdings ist es nicht die schönste Lösung, wie ich finde.

    Ich lasse einen Zähler mitlaufen, der nur dann erhöht wird, wenn ein Unterarray erkannt wird. Ausserdem gibts nen Bool, der dann true ist, wenn ein Unterarray erkannt wurde.

    Die Ausgabe erfolgt dann nur, wenn aktuelles Level gleich dem Zählerstand und der Bool true ist...

    Nicht schön, aber selten.

    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •