PowerShell PhP Object Mehrmals selben Wert

JavaBeginner

Ensign
Registriert
Juli 2015
Beiträge
142
Hey, ich stehe vor folgendem Problem: Ich möchte mehrmals die Werte {Id: <Wert>, Ort: '<Ortname>'},...
in einem Object haben. jedoch überschreiben diese sich jedesmal aufs neue. momentan habe ich das mit einem String gelöst, welcher ein festes Layout besitzt und "aufaddiert" wird. Multidimensionale arrays funktionieren auch nicht so ganz da ich das bei Objekten anscheinend nicht verwenden kann/darf.
Code:
Fatal error: Uncaught Error: Cannot use object of type stdClass as array in
Hätte vielleicht jemand eine Idee wie man an das Problem herangehen könnte?

Edit: Habe mich verklickt bei der Tag-Auswahl.
 
Zuletzt bearbeitet:
bog schrieb:
$foo["xyz"] statt $foo->xyz benutzt?

Okay, habe es zu diesem Output gebracht:
Code:
stdClass Object ( [0] => stdClass Object ( ) [1] => stdClass Object ( [Id] => 3 [Ort] => Berlin) [2] => stdClass Object ( [Id] => 1 [Ort] => Bremen) )

Ist jedoch nicht in dem Format wie ich es mir erhofft :/
Jemand eine Idee wie ich das in mein gewünschtes Format bekomme? Oder bin ich mit folgendem auf einem Holzweg?
Code:
$obj = (object)array((object)array());
 
hm, so ganz klar was du raushaben willst versteh ich noch nicht. in objekten sind variablen im key-value-schema abgelegt, du scheinst zumindest fuer das aeussere "objekt" eigentlich ein array haben zu wollen, wo du N stueck von irgendwas (hier objekte) ablegst. wenn du echt ein objekt als container willst, solltest du in diesem objekt entweder ein array anlegen, in das deine daten-objekte reinkommen, oder du schaust dir mal reflection an.
 
bog schrieb:
hm, so ganz klar was du raushaben willst versteh ich noch nicht. in objekten sind variablen im key-value-schema abgelegt, du scheinst zumindest fuer das aeussere "objekt" eigentlich ein array haben zu wollen, wo du N stueck von irgendwas (hier objekte) ablegst. wenn du echt ein objekt als container willst, solltest du in diesem objekt entweder ein array anlegen, in das deine daten-objekte reinkommen, oder du schaust dir mal reflection an.

Okay, mit einem array um das object Array klappt es, jedoch eher teilweise.
Code:
[{},{"Anzahl":"3"},{"Ort":"Berlin"},{"Anzahl":"1"},{"Ort":"Bremen"}]

aus irgendeinem Grund ist der erste Wert nicht eingetragen und es hat auch noch nicht ganz Format das ich benötige. Eigentlich bräuchte ich es folgendermaßen:
Code:
[{"Anzahl":"3","Ort":"Berlin"},{"Anzahl":"1","Ort":"Bremen"}]

Momentan wird mein Objectarray folgendermaßen erstellt:
Code:
$obj = array((object)array());
sql...
while($result= mysqli_fetch_array($query)){
  $obj[]->Anzahl = $result['wert'];
  $obj[]->Ort = $result['ort'];
      }
 
Code:
  $obj[]->Anzahl = $result['wert'];
  $obj[]->Ort = $result['ort'];
das problem damit ist, dass $obj[] einen neuen index erstellt. und das passiert zweimal pro iteration, d.h. pro iteration kriegst du jeweils zwei objekte hinzu, die dann ein attribut "Anzahl" respektive "Ort" haben und den dazugehoerigen wert.
viel eher willst du wohl pro iteration genau ein objekt erstellen, und das dann in das sammelarray reinschmeissen. also sowas wie:
Code:
$objects = array();
sql...
while(...) {
  $obj = (object) array();
  $obj->Anzahl = $result['wert'];
  $obj->Ort = $result['ort'];
  $objects[] = $obj;
}
 
bog schrieb:
Code:
  $obj[]->Anzahl = $result['wert'];
  $obj[]->Ort = $result['ort'];
das problem damit ist, dass $obj[] einen neuen index erstellt. und das passiert zweimal pro iteration, d.h. pro iteration kriegst du jeweils zwei objekte hinzu, die dann ein attribut "Anzahl" respektive "Ort" haben und den dazugehoerigen wert.
viel eher willst du wohl pro iteration genau ein objekt erstellen, und das dann in das sammelarray reinschmeissen. also sowas wie:
Code:
$objects = array();
sql...
while(...) {
  $obj = (object) array();
  $obj->Anzahl = $result['wert'];
  $obj->Ort = $result['ort'];
  $objects[] = $obj;
}

Danke für die Hilfe, klappt jetzt alles^^
 

Ähnliche Themen

Antworten
3
Aufrufe
3.259
Faustpfand
F
Zurück
Oben