phpbar.de logo

Mailinglisten-Archive

[php] Probleme ein Mehrdimensionales array zu vereinfachen...

[php] Probleme ein Mehrdimensionales array zu vereinfachen...

Jens Giessmann jg at handcode.de
Mit Jun 22 16:54:58 CEST 2005


Hi,

On Wed, Jun 22, 2005 at 04:12:58PM +0200, Aron Schlesinger wrote:
> Am 22.06.2005 um 16:07 schrieb Raffael Schmid:
> >
> >> Hat jemand ne idee wie ich das elegant lösen kann?
> >
> >verschachtelte foreach?
> >
> 
> Dafür müsstest Du wissen wie viele ebenen das ganze hat.
> Und das soll beliebig sein, wenn ich Michael richtig verstanden habe.
> Das würde ich mir über einen Rekursive[0] Funktion zusammen bauen.

Genau, so in der Art:

--------------------------------Begin Code-----------------------------
# Dummy-Daten 
# (sorry, das bekomme ich nicht auf 80 Zeichen Breite formatiert :-) 
$struct = array('50'  
                => array('id' => '50', 
                         'page_name' => 'index', 
                         '_SUB_PAGE_'  
                         => array('51'  
                                  => array('id' => '51',  
                                           'page_name' => 'admin-website',  
                                           '_SUB_PAGE_'  
                                           => array('53'  
                                                    => array('id' => '53',   
                                                             'page_name' => 'pages' 
                                                             ) 
                                                    ), 
                                           ), 
                                  '52'  
                                  => array('id' => '52',   
                                           'page_name' => 'admin-projects',   
                                            
                                           ), 
                                  ) 
                         ) 
                ); 
 
# das hier wird dein eindimensionales Array 
$simple_struct = array(); 
$path = ''; 
 
# Funktion aufrufen. Da direkt in die Referenz von $simple_struct 
# geschrieben wird ohne return-Wert. 
get_nodes($struct, $path, $simple_struct); 
 
# Und hier die eigentliche Funktion die sich rekursiv aufruft. 
function get_nodes($struct, $path, &$simple_struct){ 
   
  foreach ($struct as $id => $values) { 
         
    $simple_struct[$id]['id'] = $values['id']; 
    $simple_struct[$id]['id'] = $values['id']; 
    $simple_struct[$id]['page_name'] = $path . '/' . $values['page_name']; 
 
    if (isset($values['_SUB_PAGE_']) && is_array($values['_SUB_PAGE_'])) { 
      get_nodes($values['_SUB_PAGE_'], $simple_struct[$id]['page_name'], $simple_struct); 
    } 
     
  } 
   
} 

print_r($simple_struct); 
---------------------------------End Code------------------------------


Gruss Jens

php::bar PHP Wiki   -   Listenarchive