Привет у меня есть 3 массива в моем файле JSON
{
"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
}
}
]
}
Я объединил Термо Духовки и Термо Части. Как это.
$comTemperatures = array($json->FurnaceArray[0]->Oven->Thermo , $json->FurnaceArray[0]->Part->Thermo);
А теперь я хочу использовать $ comTemperas в качестве индекса для Thermostatus. Как я могу показать температуры, индекс которых указан в $ comTemperas
теперь у меня есть это
foreach ($comTemperatures as $value) {
if ($thermostatus[$value] == 0) {
echo $temperatures[$value];
}
}
но я получаю ошибку «недопустимый тип смещения» в foreachloop.
Кто-нибудь может мне помочь
Если я вас правильно понимаю
$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];
}
}
Пример на: https://eval.in/859257
Других решений пока нет …