Hallo Bernhard,
du hast ein Array $arr. Dessen Einträge sind Subarrays. Eins der Subarrays enthält einen Eintrag mit Schlüssel "id" und einem bestimmten Wert. Zum Beispiel 231.
Dieses Subarray möchtest Du finden? Und darin dann auf den Eintrag mit Schlüssel 'content' zugreifen?
Du brauchst für den ersten Teil eine Kreuzung aus array_search und array_filter, die es aber leider nicht in der Standard-Arraysammlung gibt.
Schreibe Dir eine Funktion, der Du $arr und den gesuchten Wert für 'id' übergibst, und die das Subarray liefert. In diesem Subarray dann auf den 'content' Eintrag zuzugreifen wird Dir sicherlich gelingen.
In der Funktion lässt Du eine foreach ($arr as $subArray) laufen. In der Schleife hast Du jeweils eins der Subarrays im Zugriff. Dort prüfst Du die ID und wenn sie stimmt, verlässt Du Schleife und Funktion mit einem return $subArray
. Hinter der Schleife schreibst Du return FALSE;
, um in schlechter alter PHP Tradidition das Nichtfinden eines Wertes durch Rückgabe von FALSE anzuzeigen.
Du kannst natürlich auch versuchen, array_filter anzuwenden. Das ist etwas abstrakter. Dieser Funktion übergibst Du ein so genanntes „Callable“, das die Prüfung auf die richtige ID vornimmt. Man muss dabei nur an die use
-Klausel denken, um die gesuchte ID ins Callable hineinzubekommen, denn die steht ja bestimmt in einer Variablen:
Ein Callable ist entweder eine anonyme Funktion, wie gleich gezeigt, oder der Name einer normalen Funktion, die Du vorher definiert hast. Die use-Klausel ist aber wichtig, sonst kommt sie an $gesucht nicht heran.
$gesucht = 231;
$array = array(array(...), array(...)); // Deine Daten
$ergebnis = array_filter($array, function($eintrag) use($gesucht)
{
return $eintrag['id'] === $gesucht;
});
In $ergebnis findest Du danach ein Array mit so vielen Einträgen, wie gefunden wurden. Wenn die ID eindeutig ist, nur einer.
if (count($ergebnis) > 0)
{
$inhalt = $ergebnis[0]['content'];
}
Rolf
sumpsi - posui - obstruxi