dedlfix: Eindimensionales Array zu Mehrdimensionalem Objekt konvertieren

Beitrag lesen

Hi!

Ich habe über die Suche nur gefunden, wie man ein mehrdimensionales Array in ein Eindimensionales Array umwandeln kann, jedoch konnte ich daraus keine Ansätze für mein Problem entnehmen :-(

Vergiss die Begriffe eindimensional und mehrdimensional, wenn es um Arrays unter PHP geht. Für Objekte ist er komplett fehl am Platz. Er verstellt möglicherweise nur, die wirkliche Natur von PHP-Arrays zu sehen. Sie sind eine Ansammlung von Schlüssel-zu-Wert-Zuordnungen. Werte können skalare Typen oder Arrays und Objekte sein. Es ergibt sich immer eine Baumstruktur, auch wenn diese unter Umständen so regelmäßig ist, dass sie mit einem mehrdimensionalen Array vergleichbar ist. In deinem Fall ist es nur eine typische baumstrukturartige Verschachtlung.

Zielobjekt:
$MeinBlog->2010->12->5 = true;

$MainBlog soll eine Eigenschaft mit dem Namen 2010 haben, deren Wert ein Objekt der Default-Klasse stdClass sei. Dieses soll auch nur eine Eigenschaft haben, deren Name 12 sein soll und ebenfalls ein Objekt von stdClass ist, welches wiederum eine Eigenschaft namens 5 mit dem skalaren booleschen Wert true sein soll.

Im Prinzip müsste es ja so aussehen:
Nur anstatt "String anhängen" müsste ich irgendwie sagen "Objekt anhängen".

Wenn du das einen String zusammenbaust, brauchst du eval, um daraus Code zu generieren.

Nur mit

$object;

foreach($array as $key => $value)
{
  $object->{$key} = $value;
}


> bleibe ich in meiner einen Dimension hängen -\_-  
  
Ja, weil du nun mit $value weitermachen musst, denn das nächste Element muss dessen Kind werden.  
  

> Hat jemand eine Idee?  
  
Die Frage ist allerdings, was es bringt, solch eine Struktur aufzubauen. Am Ende weißt du doch gar nicht, welche Eigenschaften es gibt, um per Code darauf zuzugreifen. Ich sehe da überhaupt keinen Vorteil in diesem Vorgehen, eher noch den Nachteil, dass man schlechter über Objekteigenschaften als über (verschachtelte) Arrays iterieren kann. Können kann man schon, aber das ist auf alle Fälle stillos, über die Eigenschaften von Objekte zu iterieren, wo doch für solche Datensammlungen Arrays vorgesehen sind.  
  
  
Lo!