PHP Zugriff auf mehrdimensionales Array

ryk

BAZINGA!
ID: 66395
L
4 Mai 2006
3.313
115
Hallo,

ich habe folgende Arraystruktur
PHP:
stdClass Object ( [Records] => 4 [Products] => stdClass Object ( [Product] => Array ( [0] => stdClass Object ( [Id] => 255424205 [ANumber] => M666699 [SInformation] => stdClass Object ( [SUrl] => https://www.test.de [SName] => Test)

Nun möchte ich auf den 'SName' zugreifen. Leider wird aber keine Ausgabe gemacht. So habe ich es bisher versucht:

PHP:
$array->Products->Product->0->SName

Die Ausgabe auf der ersten Ebene (also z.B. $array-Records) funktioniert.

Weiß jemand wie es geht bzw. was ich falsch mache?

Grüße
ryk;)
 
Fehler 1: $array->Products->Product ist ein Array, kein Objekt.
Fehler 2: Das Objekt $array->Products->Product[0] hat keine Eigenschaft namens SName.
 
Fehler 1: $array->Products->Product ist ein Array, kein Objekt.
Fehler 2: Das Objekt $array->Products->Product[0] hat keine Eigenschaft namens SName.

Erstmal danke! Fehler 1 war mir vorher so nicht klar. Bei Fehler 2 habe ich vergessen, dass dazwischen noch das Objekt SInformation ist. Wenn ich es richtig verstanden habe, müsste der Zugriff wie folgt möglich sein!?!

PHP:
$array->Products->Product[0]->SInformation->SName
 
Höre auf den Meister (TheHacker :D)

Du müsstest so drauf zugreifen können:
PHP:
$array->Products->Product->0->SInformation->SName

Bei so nem langen, mehrdimensional extremst verschachtelten Array passier sowas öfters, versuch doch lieber gleich mit ner richtigen Klasse zu arbeiten, bei denen Du nicht so ne riesige Liste aufrufen musst... :)
 
PHP:
$array->Products->Product[0]->SInformation->SName
sieht richtig aus.

Vielleicht noch zwei Anmerkungen:

  • Misch nicht wild durcheinander, du merkst ja, wie verwirrend das wird. Mit PHP-Arrays bist du flexible, kannst sowohl numerische (z.B. für die Auflistung von n Produkten), als auch asoziaitive Indexes haben.

  • Mnemonische Variablennamen! Nenn das Ding nicht $array, wenn es gar kein Array is :doh:
 
  • Like
Reaktionen: ryk
Wunderbar! Funktioniert auch :D
Das Problem ist das ich es über ein SOAP-Request geliefert bekomme und die eigentliche Variable ist nicht $array sondern $request ;) Von daher hab ich auf die Struktur kein Einfluß, aber ansonsten werd ich die Ratschläge beherzigen :)

sieht richtig aus.

Vielleicht noch zwei Anmerkungen:

  • Misch nicht wild durcheinander, du merkst ja, wie verwirrend das wird. Mit PHP-Arrays bist du flexible, kannst sowohl numerische (z.B. für die Auflistung von n Produkten), als auch asoziaitive Indexes haben.

  • Mnemonische Variablennamen! Nenn das Ding nicht $array, wenn es gar kein Array is :doh:
 
mal folgendes machen:

echo "<pre>";
var_dump( $array ); [ oder $request ]

Dann ist die komplette Struktur mit Daten einzusehen !

Somit weiss man auch, wo man wie drauf zugreifen muss ...
 
Dann versteh ich aber nicht die Frage, wenn er die Struktur sieht, dann sollte er auch den Objectpfad bis zu seinem Unterobject entlanggehen können.
Zumal die korrekte Klammerung fehlte !

PHP:
stdClass Object ( 
[Records] => 4 
   [Products] => stdClass Object ( 
      [Product] => Array ( 
         [0] => stdClass Object ( 
            [Id] => 255424205 
            [ANumber] => M666699 
            [SInformation] => stdClass Object ( 
               [SUrl] => https://www.test.de 
               [SName] => Test
            ) 
         )
      )
   )
)

Hätte Er sich mal die kurze Zeit dafür genommen, wäre es Ihm ein leichtes gewesen, den genauen Weg zu sehen...

$reference->Record->Products[0]->SInformation->SName

So wie er es dann letztendlich geschafft hat