Array durchsuchen

Klassen zur Datenverarbeitung in den Controllern (DRY)

Array durchsuchen

Beitragvon havanna am So 21. Jun 2009, 23:04

Hallo zusammen,
die nachfolgend beschriebene Frage könnte auch unter PHP allgemein laufen. Da ich es aber für eine Component benötige, stelle ich die Frage hier.
Ich habe z.B. folgendes Array, das ich aus einer XML erzeugt habe:
Code: Alles auswählen
[Post]
  [edit]
    [LAYOUT] => zweispaltig
[LAYOUT] => default


In meiner Funktion möchte ich nun im Array schauen, ob ich mit dem angegebenen Pfad einen Wert finde. Der Key ist LAYOUT.
Bsp.: Ich will wissen, ob es /post/edit/LAYOUT gibt. Wenn es den Key gibt, soll mir der Wert des Keys zurückgegeben werden.
Wenn es den Wert nicht gibt, möchte ich eine Stufe niedriger suchen. Also mit /Post/LAYOUT.
Bei meinem Beispiel würde ich mit der Suche nach /post/edit/LAYOUT den Wert "zweispaltig" zurückgegeben. Bei der Suche nach /post/read/21 würde mir die Funktion "default" zurückgegeben (unter dem Pfad wurde nichts gefunden, gehe zurück bis [Post] -> dort wird "default" gefunden).
Ich habe es mit Set::extract versucht, doch das scheint nicht zu funktionieren.

Hat jemand eine Idee, welche Funktion mir da weiterhelfen könnte?

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 174
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Array durchsuchen

Beitragvon euromark am So 21. Jun 2009, 23:37

if (!empty($array[Post][edit][Layout])) { use this one }
elseif (!empty($array[Post][Layout])) { use this one }
else {}

PS: mit welchem XML reader hast du es denn gemacht? (rein interessehalber)
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: Array durchsuchen

Beitragvon havanna am Mo 22. Jun 2009, 02:10

Hallo Mark,
so einfach geht es leider nicht :)
Ich halte das ganze ja dynamisch. D.h. ich weiß auch nie wo ich einsteige (in welcher Tiefe des Arrays).
Habe es jetzt aber gefunden: Mit classicExtract habe ich genau das, was ich will. :D
Ciao Thomas

P.S. Normal verwende ich DOM. Dann hätte ich natürlich xPath verwendet. Aber ich wollte mit den Cake Funktionen arbeiten. Deshalb habe ich den simplen XML-Parser von Cake verwendet.
Benutzeravatar
havanna
 
Beiträge: 174
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN


Zurück zu Components

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron