Arrays können in PHP rekursiv aufgebaut sein, wie zum Beispiel:
$GLOBALS ist auch ein rekursives Array.
In meiner Anwendung möchte ich komplette Arrays auslesen und durchlaufen (durch eine rekursive Funktion zum Beispiel).
Handelt es sich dabei um rekursive Arrays rufe ich aber eine Endlosschleife auf.
Wie stelle ich fest, daß ich ein rekursives Array habe, ohne daß ich über den Aufbau des Arrays vorher Bescheid weiß?
Ich hatte die Idee, einfach einen Flag in ein Array zu setzen, und in der tieferen Ebene einfach zu testen ob das Flag vorhanden ist:
Ich war der festen Überzeung daß ich mit dieser Methode feststellen könnte, ob eine Rekursion in einem Array vorliegt, aber es funktioniert leider nicht...
Gibt es denn gar keine Möglichkeit?
Ich habe mich im Internet bereits totgesucht ohne fündig zu werden.
PHP-Code:
$a = array();
$a[0] = $a;
print_r($a);
//Ausgabe:
//Array
//(
// [0] => Array
// *RECURSION*
//)
In meiner Anwendung möchte ich komplette Arrays auslesen und durchlaufen (durch eine rekursive Funktion zum Beispiel).
Handelt es sich dabei um rekursive Arrays rufe ich aber eine Endlosschleife auf.
Wie stelle ich fest, daß ich ein rekursives Array habe, ohne daß ich über den Aufbau des Arrays vorher Bescheid weiß?
Ich hatte die Idee, einfach einen Flag in ein Array zu setzen, und in der tieferen Ebene einfach zu testen ob das Flag vorhanden ist:
PHP-Code:
//Rekursives Array herstellen
$a = array();
$a[0] = $a;
//Flag setzen
$a['__RECURSION__'] = true;
//Eine Ebene Tiefer gehen in die Rekursion gehen
$b = $a[0];
//Test ob eine Rekursion vorhanden ist.
if ( array_key_exists( '__RECURSION__', $b ) )
echo "Rekursion vorhanden";
Gibt es denn gar keine Möglichkeit?
Ich habe mich im Internet bereits totgesucht ohne fündig zu werden.
Kommentar