dedlfix: zählen der "Ebenen" eines Arrays

Beitrag lesen

echo $begrüßung;

wie kann ich mit ner funktion rauskriegen, dass z.b. $arr['1']['ebene2']['e3'] über drei "ebenen" verfügt? konnte nix passendes finden.

So etwas gibt es nicht, weil ein Array unter PHP weder mehrdimensional ist noch über mehrere Ebenen geht oder wie auch immer man das ausdrücken will.

Ein Array besteht lediglich aus Elementen, die aber beliebigen Typs sein können. Ein Element kann ein Array sein (dessen Elemente wiederum vom Typ Array sein können). Ein Element kann aber auch ein Objekt sein. Diese Verschachtelungen können beliebig flach oder tief sein.

Um die maximale Anzahl dieser Verschachtelungen zu ermitteln, brauchst du

  • eine Variable, die die bisherige maximale Verschachtelungstiefe festhält, initialisiert mit 0
      Dafür bietet sich eine statische Variable innerhalb der folgend erläuterten Funktion an.
       static $maxlevel = 0;

  • eine Funktion, die als Parameter ein Array und einen Level-Zähler, vorbelegt mit 1, erwartet.
      function array_level_count($array, $level = 1) {...}

  • Der erste Aufruf übergibt nur das Array; (damit geht $level in die erste Runde mit dem Default-Wert)

  • Wenn $level größer als $maxlevel ist: $level in $maxlevel ablegen

  • jedes Element des Arrays durchlaufen

  • Wenn es ein Array ist, array_level_count mit dem Element und $level + 1 als Parameter aufrufen

  • Der Rückgabewert der Funktion ist $maxlevel. Innerhalb der rekursiven Aufrufe ist er belanglos, aber als Endergebnis wirst du ihn dann haben wollen. :-)

Wenn du PHP5 hast, kannst du auch was mit array_walk_recursive() zusammenbauen.

echo "$verabschiedung $name";