return macht mein Array kaputt?!

Ich hab folgende Funktion geschrieben um eine Array aus einem verschachtelte Array zu suchen:
Code:
function suche_array($array,$was){
	$oft=count($array);
	for($x=0;$x<$oft;$x++){
		if(key($array)==$was){
			return pos($array);
		}else{
			if(is_array(pos($array))){
				suche_array(pos($array),$was);
			}
			next($array);
		}
	}
}
////////////////////////////////
$fritz=suche_array($kategorien,$inhalt);
Wenn ich die Funktion so aufrufe, dann ist das $fritz-Array leer. Wenn ich aber in der Funktion vor das return schreibe
print_r($pos($array)) dann gibt er mit das Array brav aus.
pos($array) findet also sehrwohl das Array, aber bei der Übergabe mittels return wirds leer...

Ist da jemand?

//EDIT: ein verschachteltes zum selber probieren:

$kategorien=array(
"Leibchen"=>array("Hemden"=>"Hemden","T-Shirts"=>"T-Shirts","Pullover"=>array("Baumwolle"=>"Baumwolle","Polyester"=>"Polyester")),
"Hosen"=>array("Shorts"=>"Shorts","Kordhosen"=>"Kordhosen"),
"Unterwaesche"=>array("Socken"=>"Socken","Unterhosen"=>"Unterhosen"),
"Sonstiges"=>"Sonstiges");

Die erste und zweite Eben gehen, Pullover kann er nicht auflisten
 
Wie du beobachtet hast: Wenn du nach einer Obergruppe oder einer Untergruppe, die kein Array ist, suchst, liefert deine Funktion ein richtiges Ergebnis. Sie liefert also kein vernünftiges Ergebnis, wenn sie sich selbst rekursiv aufruft. Und das liegt daran, dass der Rückgabewert beim rekursiven Aufruf nicht beachtet wird (Zeile 8 ).
Die Funktion findet das Gesuchte und kehrt dann zur Oberfunktion zurück, von der sie aufgerufen wurde. Das Ergebnis wird zwar an die Oberfunktion übergeben, von dieser aber nicht aufgenommen. In Zeile 8 müsste also noch überprüft werden, ob die Funktion erfolgreich ist und ggf. den Wert zurückgeben.
Code:
    if($ret = suche_array(pos($array),$was))
     return $ret;


WebSpider
 
Zurück
Oben