I’m working with an API and I keep getting Undefined Index when trying to echo the data out,
If I use this code:-
<?php $registration= $_GET['registration']; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests/?registration=$registration", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "cache-control: no-cache", "content-type: application/json", "x-api-key: mykey" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); echo $response; ?>
I get this output:-
[{"registration":"myreg","make":"TOYOTA","model":"PRIUS","firstUsedDate":"2014.10.26","fuelType":"Hybrid Electric (Clean)","primaryColour":"White","motTests":[{"completedDate":"2018.02.07 17:57:53","testResult":"PASSED","expiryDate":"2019.02.06","odometerValue":"21645","odometerUnit":"mi","motTestNumber":"827555092722","rfrAndComments":[]}]}]
And then if I add this to the end of the code
$info=json_decode($response,true); echo $info['registration'];
I get a “Notice: Undefined index: registration”
Looking at the docs for json_decode I cannot see what I am doing wrong. On another API I have used I noticed it was using CURLOPT_CUSTOMREQUEST => “POST”, and had this line underneath CURLOPT_POSTFIELDS => json_encode([‘registration’ => $registration]),
And it would echo out. This one wont and the only difference I see is the GET
So has it got something to do with the CURLOPT_CUSTOMREQUEST => “GET”, line to why I cannot echo anything out?
Thanks in advance for any help
Advertisement
Answer
If the answer is “[{something: whatever}]”, you’re getting an array with an object inside.
So, your registration is actually $info[0]['registration']
.
Or you can extract it by first doing $info = $info[0]
.