I have the following code to read a Json and store some values into an array:
<?php
$json = '[{
"provider_id":1,
"nro_chart":1,
"control": {
"color": "blue",
"total_value": 21.5,
"car_id": 421118
}
},
{
"control": {
"color": "green",
"total_value": 25,
"car_id": 421119
}
},
{
"control": {
"color": "red",
"total_value": 18,
"car_id": 421519
}
}
]';
$j = json_decode($data);
$result = [];
foreach ($j as $item) {
array_push($result,[
'total_value' => $item->control->total_value,
'car_id' => $item->control->car_id
]);
}
Now I need to get the two values that are outside of "control" like "provider_id" and "nro_chart" inside a variable.
The JSON contains an array of one element, so to access provider_id
and nro_chart
, get the first element and directly access the properties:
$j = json_decode($json);
var_dump($j[0]->provider_id); // /Applications/MAMP/htdocs/trello/up.php:28:int 1
var_dump($j[0]->nro_chart); // /Applications/MAMP/htdocs/trello/up.php:28:int 1
Or, within that same foreach
loop:
foreach ($j as $item) {
array_push($result,[
'total_value' => $item->control->total_value,
'car_id' => $item->control->car_id
]);
if (isset($item->provider_id)) {
var_dump($item->provider_id);
}
if (isset($item->nro_chart)) {
var_dump($item->nro_chart);
}
}
Be sure to check if the property is set for that element with isset()
first.