Multi Arry durchsuchen

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

Kommst du mit array_search oder in_array nicht weiter?

Hi Ralf,

das mit dem in_array ist schon mal eine gute Idee.
Dann Zeigt wird mir das komplette array wo der Wert drin ist und ich könnte mir das „Value“ raus suchen.
Nur leider sucht das in_array nur auf einer eben

aktuell sieht es so aus.

$string = GetValue(30464);
$data = json_decode($string, true);

foreach ($data as $item=> $value){
    if (is_array ($value)){
        if (in_array('MANUAL',$value)){print_r ($value);}
                                     
    }