2017-09-11 2 views
2

Hallo ich habe 3-Arrays in meine JSON-DateiVerwenden Sie Array-Werte als anderen Array-Index. illegal versetzem

{ 
    "Temperatures": [26.00, 26.50, 26.50, 0.00, 0.00, 20.00, 0.00, 0.00, 0.00], 
    "ThermoStatus": [0, 0, 0, -6, -6, -6, -3, -6, -6], 
    "FurnaceArray": [{ 
      "Oven": { 
       "Thermo": [1, 4], 
       "SetPoint": 60.5 
      }, 
      "Part": { 
       "Thermo": [2, 3], 
       "SetPoint": 60.5 
      }, 
      "Outer": { 
       "Thermo": [5], 
       "SetPoint": 60.5 
      }, 
      "TimerElapsed": 79, 
      "HeaterOutput": 0.600, 
      "ProgramPhase": 1, 
      "HeaterState": 3, 
      "OvenStatus": { 
       "DoorOpened": true, 
       "EmergencyPressed": false, 
       "ProgramDone": false 
      } 
     }, 
     { 
      "Oven": { 
       "Thermo": [5, 6], 
       "SetPoint": 60.5 
      }, 
      "Part": { 
       "Thermo": [7], 
       "SetPoint": 60.5 
      }, 
      "Outer": { 
       "Thermo": [5], 
       "SetPoint": 60.5 
      }, 
      "TimerElapsed": 79, 
      "HeaterOutput": 0.600, 
      "ProgramPhase": 1, 
      "HeaterState": 3, 
      "OvenStatus": { 
       "DoorOpened": true, 
       "EmergencyPressed": false, 
       "ProgramDone": false 
      } 
     } 
    ] 
} 

ich den Ofen Thermo und den Teil Thermo kombiniert haben. So was.

Und jetzt möchte ich $ comTemperaturen als Index für Thermostatus verwenden. Wie kann ich die Temperaturen zeigen, die der Index in $ comTemperatures gegeben

ich habe jetzt diese

foreach ($comTemperatures as $value) { 
    if ($thermostatus[$value] == 0) { 
     echo $temperatures[$value]; 
    } 
} 

aber ich bekomme ein Fehler am foreachloop „illegal Typ-Offset“. Kann mir jemand helfen

+0

Sie einen illegalen Offset-Typen erhalten, weil '$ comTemperatures' ein Array ist, die zwei andere Arrays enthalten, so im foreach ist $ value selbst ein Array, das kein gültiger Array-Schlüssel sein kann. Was ist Ihr erwartetes Format von '$ comTemperatures'? – apokryfos

+0

Sorry mein Englisch ist nicht sehr gut, aber was meinst du mit dem erwarteten Format? –

+0

Ich habe eine Antwort von dem, was ich vermute, ist, was Sie vorhatten zu tun, aber fühlen Sie sich frei, zu antworten, wenn es nicht das ist, was Sie brauchten – apokryfos

Antwort

1

Wenn ich Dich richtig verstehe:

$jsonArray = json_decode($jsonString); //$jsonString is the JSON you shared 

$thermostatus = $jsonArray->ThermoStatus; 
$temperatures = $jsonArray->Temperatures; 
//Merge two arrays into one instead of making one array of arrays 
$comTemperatures = array_merge($json->FurnaceArray[0]->Oven->Thermo , $json->FurnaceArray[0]->Part->Thermo);  
foreach ($comTemperatures as $value) { 
    if ($thermostatus[$value] == 0) { 
     echo $temperatures[$value]; 
    } 
} 

Beispiel an: https://eval.in/859257

+0

Danke Herr, Sie haben meinen Tag gemacht. Es funktioniert –

Verwandte Themen