+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Rekursive Funktion gibt Array nicht zurück

  1. #1
    TP-Senior Schneemann macht alles soweit korrekt Avatar von Schneemann
    Registriert seit
    Jan 2006
    Beiträge
    215

    Rekursive Funktion gibt Array nicht zurück

    Hallo,

    ich habe einen verschachtelten Array mit dem Name $structure. Manchmal hat ein Eintrag Kinder, manchmal nicht.

    Mein Array $structure sieht so aus:
    PHP-Code:
    Array
    (
      [
    52] => Array
        (
          [
    id] => 52
          
    [name] => Tier
          
    [level] => 0
          
    [children] => Array
            (
              [
    22] => Array
                (
                  [
    id] => 22
                  
    [name] => Katze
                  
    [level] => 1
                  
    [children] => Array
                    (
                    )
                )
              [
    26] => Array
                (
                  [
    id] => 26
                  
    [name] => Maus
                  
    [level] => 1
                  
    [children] => Array
                    (
                    )
                )
            )
        )

    Ich hatte gehofft mit dieser Funktion die leeren "children" entfernen zu können aber es klappt nicht.

    PHP-Code:
    function rekursiv$array )
    {

      foreach( 
    $array as $key => $value )
      {
        if( 
    is_array($value) )
        {
          if( !empty( 
    $value['children'] ) )
          {
            
    rekursiv$value['children'] );
          }
          else
          {
            unset(
    $value['children']);
            
    $temp[] = $value;
          }
        }
      }

      return 
    $temp;
    }

    $ausgabe rekursiv$structure );

    echo 
    '<pre>'print_r($ausgabe); echo '</pre><hr/>'
    Weiß jemand wo der Fehler ist?
    Gruß,
    Peter

  2. #2
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Wenn Deine level1 Childs nun auch noch Elemente haben, dann musst mal weiter schauen, dazu müssten dann noch mehr Ausnahmen rein ...
    PHP-Code:
    <?php
    $structure 
    = Array(
        
    52 => Array(
            
    'id' => 52,
            
    'name' => 'Tier',
            
    'level' => 0,
            
    'children' => Array(
                
    22 => Array(
                    
    'id' => 22,
                    
    'name' => 'Katze',
                    
    'level' => 1,
                    
    'children' => Array(
                    )
                ),
                
    26 => Array(
                    
    'id' => 26,
                    
    'name' => 'Maus',
                    
    'level' => 1,
                    
    'children' => Array(

                    )
                )
            )
        )
    );


    function 
    rekursiv$array )
    {
        foreach( 
    $array as $key => $value )
        {
            if( 
    is_array($value) )
            {
                foreach( 
    $value as $subkey => $subvalue )
                {
                    if(
    $subkey != 'children' && $value['level'] == )
                    {
                        
    $temp[$subkey] = $subvalue;
                    }
                    else if(!empty( 
    $value['children'] ))
        
                    {
                        
    $temp['children'] = rekursiv$value['children'] );
                    }
                    else
                    {
                        unset(
    $value['children']);
                        
    $temp[$key] = $value;
                    }
                }
            }
            else 
    $temp[$key] = $value;
        }
        return 
    $temp;
    }

    $ausgabe rekursiv$structure );
    echo 
    '<pre>'print_r($ausgabe); echo '</pre><hr/>';
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

+ Antworten

Aktive Benutzer

Aktive Benutzer

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

     

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 45 46 47 48 49 50 51