dedlfix: Array rekursiv durchsuchen - die Dritte

Beitrag lesen

echo $begrüßung;

Alle Kontrollausgaben zeigen mir, daß es offenbar schon mit dem 'is_array' zur Unterscheidung hakt, und der Pfadaufbau nicht stimmt, denn für jedes foreach hängt er alle $value['href'] - Werte aneinander...
Ich bin echt ratlos, das geht offensichtlich über meinen Horizont;

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.

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

echo "$verabschiedung $name";