I managed to get all the data in loops one by one. But I only want to get the 2 questions inside the ‘maths’ object and when I try other methods I get different errors.
Ex: Cannot use object of type stdClass as array
JSON:
{
"quiz": {
"sport": {
"q1": {
"question": "Which one is correct team name in NBA?",
"options": [
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriros",
"Huston Rocket"
],
"answer": "Huston Rocket"
}
},
"maths": {
"q1": {
"question": "5 + 7 = ?",
"options": [
"10",
"11",
"12",
"13"
],
"answer": "12"
},
"q2": {
"question": "12 - 8 = ?",
"options": [
"1",
"2",
"3",
"4"
],
"answer": "4"
}
}
}
}
PHP Codes:
$jsonFile = json_decode(file_get_contents('example_2.json', true));
function getMathQuestions($jsonFile) {
foreach($jsonFile as $val) {
if(is_object($val)) {
getMathQuestions($val);
} else {
if(is_array($val)) {
getMathQuestions($val);
} else {
echo $val . "<br>";
}
}
}
}
echo getMathQuestions($jsonFile);
>Solution :
You are missing json_decode parameter associative, if not specified you will get stdClass object instead of php array of data.
So change line:
$jsonFile = json_decode(file_get_contents('example_2.json', true));
to:
$jsonFile = json_decode(file_get_contents('example_2.json', true), true);