Einzelnen Beitrag anzeigen
  #1  
Alt 20.11.2008, 14:32:00
aLiEnTxC aLiEnTxC ist offline
Anfänger
 
Registriert seit: Sep 2002
Ort: aus de Pfalz ;)
Alter: 42
Beiträge: 6
Array tiefe ermitteln

ok.. hat sich schon erledigt.. bitte löschen..

[mod] die ursprüngliche frage lautete sinngemäsz: wie kann man die tiefe eines mehrdimensionalen arrays ermitteln ?

cx

EDIT: ok.. wieder restored ;-)

Hallo Leute,

ich stecke gerade irgendwie fest. Kann mir jemand einen Tipp geben, wie ich die tiefe eines Arrays ermitteln kann? Also ich will wissen was die maximale Tiefe des Arrays ist.

Hier mal ein Beispiel:
PHP-Code:
$test = array ( "Peter" => array (
                                    
"Thomas"  => array("Hanz" => array()),
                                    
"Norbert" => array(
                                                        
"Hanelore"  => array(
                                                                            
"Gretel" => array("Josef" => array()),
                                                                            ),

                                                        
"Adolf"     => array("Julia" => array()),
                                                      ),
                                  )
              );

print_r($test);

function 
getLevel($user_ary$level 0)
{
    
$level++;
    foreach (
$user_ary as $user => $value)
    {
      echo 
"User "sprintf("%10s"$user)." - in Level = " $level "\n";
      
$level getLevel($value$level);
    }
    return 
0;
}

echo 
getLevel($test); 
Bei dem Beispiel sollte dann eigentlich 4 rauskommen.

Wobei :

Peter = Ebene 0
Norbert = Ebene 1
Hanelore = Ebene 2
Gretel = Ebene 3
Josef = Ebene 4

Wäre euch für nen Tipp dankbar.

Gruß,
Thomas

Und hier die Lösung:
PHP-Code:
function getLevel($user_ary$level 0)
{
    
$return $level;
    foreach (
$user_ary as $user => $value)
    {
      
$level_new getLevel($value$level 1);
      if(
$level_new $return)
        
$return $level_new;
    }
    return 
$return;
}

echo 
getLevel($test); 

Geändert von aLiEnTxC (20.11.2008 um 18:04:11 Uhr) Grund: Sorry!
Mit Zitat antworten