Maik W. aus E.: Array rekursiv durchsuchen - die Lösung!

Beitrag lesen

Tach auch dedlfix,

Du hast also von meinem Vorschlag die Variante b versucht umzusetzen. Dabei verlässt du die Funktion zu schnell. Sie darf nur dann ein false liefern, wenn das Array ergebnislos durchlaufen wurde. Deine Version läuft auf ein return false; sobald der Vergleich misslang. Die weiteren Array-Elemente kommen nun nicht mehr zum Zug.

Deswegen...

Außerdem darfst du $path nicht verändern, sondern nur einen String übergeben, der aus seinem Inhalt plus dem neuen Pfad-Teil besteht.

Hier mal meine Version:

function mwe_search($haystack, $needle, $searchKey = null, $path = '', $sep = '/'){

foreach($haystack as $key =>$value) {
    if (is_array($value)) {
      if ($result = mwe_search($value,$needle, $searchKey, $path . $sep . $value['href'])) // Zuweisung, kein Vergleich
        return $result;
    } else {
      if ($searchKey !== null) {
        if (($searchKey == $key) and ($value == $needle))
          return $path;
      } elseif ($value == $needle)
        return $path;
    } //else isarray zu
  } //foreach zu

return false;
} //funktion zu

  
Perfekt! Das ist es! Genau so muß es funktionieren! Herzlichen Dank, mir fällt ein echter Brocken vom Herzen; Du hast nicht zufällig eine Amazon-Wunschliste?  
  
Danke und  
  
<http://www.gruss-aus-essen.de>  
  
Maik

-- 
![Diese Dauerleihgabe wird Ihnen präsentiert von ROMY!](http://www.gruss-aus-essen.de/selfforum/totes_huhn.jpg)  
Maik. W. aus E. sagt Dankeschön ;-)