serializable
Mitglied
Hallo zusammen,
ich hätte da noch einmal ein mittelschweres Problem. Ich habe ein assoziatives Array aus einer Anwendung, welches aus Objekten , Arrays oder auch einfachen Elementen besteht.
Ich möchte dieses Array nun so extrahieren, dass ein einfaches assoziatives Array mit einzelnen Werten entsteht. Leider scheitere ich an dieser Übung :
Anfang des Arrays zum besseren verständnis:
Mein Ansatz:
Funktion zum durchsuchen des Arrays:
Diese funktion ist private und wird nun von einer 2. Funktion solange aufgerufen, bis keine Arrays oder Objekte mehr in dem Hauptarray Array vorhanden sind. Mein Hauptarray ist eine Klassenvariable.
Schleifenfunktion:
Leider sind immernoch Objekte im Array vorhanden. Am Ende dürfen auch keine Einträge doppelt vorkommen, d.h. wenn ich ein Objekt extrahiere, dann muss im Anschluss das extrahierte Element gelöscht werden.
Vielleicht könnte mir hier jemand ein paar Tipps geben.
Danke
ich hätte da noch einmal ein mittelschweres Problem. Ich habe ein assoziatives Array aus einer Anwendung, welches aus Objekten , Arrays oder auch einfachen Elementen besteht.
Ich möchte dieses Array nun so extrahieren, dass ein einfaches assoziatives Array mit einzelnen Werten entsteht. Leider scheitere ich an dieser Übung :
Anfang des Arrays zum besseren verständnis:
PHP:
array(1) { ["findXXXGeneralSearchXXX"]=> object(stdClass)#4 (4) { ["event"]=> object(stdClass)#5 (23) { ["action"]=> string(6) "EXPORT" ["attributes"]=> NULL
Mein Ansatz:
Funktion zum durchsuchen des Arrays:
PHP:
private function readArray($array){
$data = "";
if(is_array($array)){ // ist ein Array.
foreach($array as $vname => $vvalue){ // Auslesen des Arrays
if (is_object($vvalue) ){
$data = $this -> getObjectElements($vvalue); //Objekt auslesen
unset( $array[$vname]); // Element aus Array löschen
if (is_array($data))
$this-> arr = array_merge($this->arr, $data); //Arrays zusammenfügen
else if (is_object($data) OR is_string($data))
array_push($this->arr, $data); //Element hinzufügen
}
else if (is_array($vvalue)){
$this-> arr = array_merge($this->arr, $vvalue); //Arrays zusammenfügen
unset( $array[$vname]); // Element aus Array löschen
}
else{
array_push($this->arr, $vvalue); //Element hinzufügen
unset( $array[$vname]); // Element aus Array löschen
}
}//foreach
}//end if
}//end of function
Diese funktion ist private und wird nun von einer 2. Funktion solange aufgerufen, bis keine Arrays oder Objekte mehr in dem Hauptarray Array vorhanden sind. Mein Hauptarray ist eine Klassenvariable.
Schleifenfunktion:
PHP:
public function extractData(){
foreach($this ->arr as $vname => $vvalue){
if (is_object($vvalue)or is_array($vvalue))
$this -> readArray($this -> arr);
}
return $this-> arr;
}
Leider sind immernoch Objekte im Array vorhanden. Am Ende dürfen auch keine Einträge doppelt vorkommen, d.h. wenn ich ein Objekt extrahiere, dann muss im Anschluss das extrahierte Element gelöscht werden.
Vielleicht könnte mir hier jemand ein paar Tipps geben.
Danke