Hallo Zusammen,
ich benötige mal einen Denkanstoß zu einem Problem.
Ich bekomme einen Json String per MQTT geliefert der so aussieht.
Array
(
[CausedBy] => Array
(
[0] => CYCLE_EVENT
)
[Events] => Array
(
[0] => Array
(
[CycleParametersEvent] => Array
(
[CycleParameters] => Array
(
[0] => Array
(
[ParamDesc] => DATE, Maschinen-Datum
[ParamID] => DATE
[Unit] => YYYYMMDD
[Value] => 20220916
)
[1] => Array
(
[ParamDesc] => TIME, Maschinen-Zeit
[ParamID] => TIME
[Unit] => HH:MM:SS
[Value] => 13:27:49
)
[2] => Array
(
[FractionDigits] => -1
[ParamDesc] => PARTS, Stueckzaehler
[ParamID] => ActCntPrt
[Value] => 33970
)
[3] => Array
(
[FractionDigits] => -1
[NominalValue] => 0
[ParamDesc] => TCYC, Zykluszeit
[ParamID] => ActTimCyc
[Unit] => s
[Value] => 111.37
)
[4] => Array
(
[FractionDigits] => -1
[NominalValue] => 1
[ParamDesc] => TFILL, Einspritzzeit
[ParamID] => ActTimFill[1]
[Unit] => s
[Value] => 4.6
)
[5] => Array
(
[FractionDigits] => -1
[ParamDesc] => TPLST, Dosierzeit
[ParamID] => ActTimPlst[1]
[Unit] => s
[Value] => 14.9
)
[6] => Array
(
[FractionDigits] => -1
[ParamDesc] => MATVOL, Massepolster
[ParamID] => ActVolCsh[1]
[Unit] => ccm
[Value] => 28.5
)
[7] => Array
(
[FractionDigits] => -1
[ParamDesc] => PCAV, Max. Innendruck
[ParamID] => ActPrsCavMax
[Unit] => bar
[Value] => 587
)
[8] => Array
(
[FractionDigits] => -1
[ParamDesc] => PSWITCH, Umschaltspritzdruck
[ParamID] => ActPrsXfrSpec[1]
[Unit] => bar
[Value] => 783
)
[9] => Array
(
[FractionDigits] => -1
[ParamDesc] => VSWITCH, Umschaltvolumen
[ParamID] => ActVolXfr[1]
[Unit] => ccm
[Value] => 99.5
)
[10] => Array
(
[FractionDigits] => -1
[NominalValue] => 245
[ParamDesc] => TEMP1, Zylindertemperatur 1
[ParamID] => ActTmpBrlZn[1,1]
[Unit] => °C
[Value] => 245
)
[11] => Array
(
[FractionDigits] => -1
[NominalValue] => 240
[ParamDesc] => TEMP3, Zylindertemperatur 3
[ParamID] => ActTmpBrlZn[1,3]
[Unit] => °C
[Value] => 240
)
[12] => Array
(
[FractionDigits] => -1
[NominalValue] => 235
[ParamDesc] => TEMP4, Zylindertemperatur 4
[ParamID] => ActTmpBrlZn[1,4]
[Unit] => °C
[Value] => 237
)
[13] => Array
(
[FractionDigits] => -1
[NominalValue] => 230
[ParamDesc] => TEMP5, Zylindertemperatur 5
[ParamID] => ActTmpBrlZn[1,5]
[Unit] => °C
[Value] => 230
)
[14] => Array
(
[FractionDigits] => -1
[NominalValue] => 225
[ParamDesc] => TEMP6, Zylindertemperatur 6
[ParamID] => ActTmpBrlZn[1,6]
[Unit] => °C
[Value] => 225
)
[15] => Array
(
[FractionDigits] => -1
[NominalValue] => 215
[ParamDesc] => TEMP7, Zylindertemperatur 7
[ParamID] => ActTmpBrlZn[1,7]
[Unit] => °C
[Value] => 215
)
[16] => Array
(
[FractionDigits] => -1
[NominalValue] => 50
[ParamDesc] => TEMP16, Zylindertemperatur 16
[ParamID] => ActTmpBrlZn[1,16]
[Unit] => °C
[Value] => 50
)
[17] => Array
(
[FractionDigits] => -1
[NominalValue] => 235
[ParamDesc] => TMLD1, Werkzeugtemperatur 1
[ParamID] => ActTmpMldZn[1]
[Unit] => °C
[Value] => 235
)
[18] => Array
(
[FractionDigits] => -1
[NominalValue] => 235
[ParamDesc] => TMLD2, Werkzeugtemperatur 2
[ParamID] => ActTmpMldZn[2]
[Unit] => °C
[Value] => 235
)
[19] => Array
(
[FractionDigits] => -1
[ParamDesc] => TCOOL, Kuehlzeit
[ParamID] => @IP1Stcoo
[Unit] => sec
[Value] => 25
)
[20] => Array
(
[FractionDigits] => -1
[ParamDesc] => MAXPRESSURE, Maximaler Spritzdruck
[ParamID] => @ActPrsMaxHp[1]
[Unit] => bar
[Value] => 784
)
)
[CycleQuality] => GOOD_CYCLE
[JobGoodPartsCounter] => 33970
[ProtocolCycleCounter] => 749
[Time] => 2022-09-16T11:27:49.000Z
)
)
)
[Ident] => Array
(
[Manufacturer] => BATTENFELD
[OrganisationToken] => 123456
[SerialNo] => 137395100
)
[Job] => Array
(
[JobInformation] => Array
(
[CyclicJobInformation] => Array
(
[ExpectedCycleTime] => 111
[MouldId] => F 660 531 101
[NominalParts] => 9999998
[NumCavities] => 2
)
[JobName] =>
[ProductionDatasetName] => 531101scr01
)
)
[RegisteredComponents] => Array
(
[0] => Array
(
[Id] => 1661841709085240
[Name] => F 660 531 101
[Type] => MOULD
)
)
[Time] => 2022-09-16T11:34:05.745Z
[Type] => SGM_DATA_EXCHANGE_FORMAT
[Version] => 1.0.2
)
Jetzt ist es das Ziel den String z.B nach dem Wert „TCYC, Zykluszeit“ zu durchsuchen und den Wert von dem Schlüssel [Value] der sich in der gleichen Arry Ebene befindet auszugeben.
Mein Problem ist schon das es ein Mehrdivisionales Arry ist und ich mit einer einfachen Schleife nicht weiter kommen.
$string = GetValue(30464);
$data = json_decode($string, true);
foreach ($data['Events']['CycleParametersEvent']['CycleParameters'] as $key1 => $value1) {...
Vielleicht hat einer eine Idee für mich.
Gruß Stephan