Array ändert Reihenfolge, wie gezielt auf Werte zugreifen?

Hallo Leute,

ich stehe gerade mal wieder auf dem Schlauch.

Ich lese über eine API einige Daten meines Wechselrichters ein. Das funktioniert auch soweit bis auf ein entscheidendes Detail:

Die Inhalte im Array ändern bei jedem Auslesen die Reihenfolge. Ich kann also nicht z.B. mit:
$json4->energyDetails->meters[1]->values[0]->value
zugreifen weil der Inhalt von meters1 mal die Produktion ist und beim nächsten mal z.B. der Strombezug.

Jemand eine Idee wie ich gezielt auf den Purchased oder FeedIn zugreifen kann?

Ich müsste irgendwie [type] => XXX auswerten.

Das Array:

stdClass Object
(
    [energyDetails] => stdClass Object
        (
            [timeUnit] => YEAR
            [unit] => Wh
            [meters] => Array
                (
                    [0] => stdClass Object
                        (
                            [type] => Consumption
                            [values] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [date] => 2019-01-01 00:00:00
                                            [value] => 3757255
                                        )

                                    [1] => stdClass Object
                                        (
                                            [date] => 2020-01-01 00:00:00
                                            [value] => 3491985
                                        )

                                )

                        )

                    [1] => stdClass Object
                        (
                            [type] => FeedIn
                            [values] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [date] => 2019-01-01 00:00:00
                                            [value] => 1389396
                                        )

                                    [1] => stdClass Object
                                        (
                                            [date] => 2020-01-01 00:00:00
                                            [value] => 1198316
                                        )

                                )

                        )

                    [2] => stdClass Object
                        (
                            [type] => Production
                            [values] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [date] => 2019-01-01 00:00:00
                                            [value] => 3929506
                                        )

                                    [1] => stdClass Object
                                        (
                                            [date] => 2020-01-01 00:00:00
                                            [value] => 3547070
                                        )

                                )

                        )

                    [3] => stdClass Object
                        (
                            [type] => Purchased
                            [values] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [date] => 2019-01-01 00:00:00
                                            [value] => 1217145
                                        )

                                    [1] => stdClass Object
                                        (
                                            [date] => 2020-01-01 00:00:00
                                            [value] => 1143231
                                        )

                                )

                        )

                )

        )

)

Danke und viele Grüße
Stephan

Du hast es dir schon selber beantwortet:

ch müsste irgendwie [type] => XXX auswerten.

Du hast doch Array in Array… im ersten Array hast du den type und das Array… also das Array auslesen, gucken was in Type steht und dementsprechend das darin liegende Array verarbeiten.

Und bei dem wie hänge ich halt gerade …



if ($json4[energyDetails][meters][1][type] == 'Consumption') 
{ // dann die Daten des Array 1 als Verbrauch auslesen als $json4[energyDetails][meters][1][value][0...x]
} 
if ($json4[energyDetails][meters][1][type] == 'FeedIn') 
{ // dann die Daten des Array 1 als Verbrauch auslesen als $json4[energyDetails][meters][1][value][0...x]
} 
if ($json4[energyDetails][meters][0][type] == 'Consumption') 
{ // dann die Daten des Array 0 als Verbrauch auslesen als $json4[energyDetails][meters][0][value][0...x]
} 
if ($json4[energyDetails][meters][0][type] == 'FeedIn') 
{ // dann die Daten des Array 0 als Verbrauch auslesen als $json4[energyDetails][meters][0][value][0...x]
} 



also so ganz quick und dirty geschrieben… ich denke du weisst was ich meine… eine Schleife wäre sauberer und weniger Code, aber wenn du das hier hin bekommen hast kannst du es bestimmt auf eine Schleife umbauen

Kennst du das? Man sieht die Lösung und kommt sich wie der letzte Volldepp vor? [emoji23][emoji85]

Danke!