Извлекать данные из вложенных данных JSON, используя curl php - PullRequest
1 голос
/ 23 апреля 2019

Итак, я получаю данные с URL-адреса в формате JSON, как показано ниже.

[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
  "street": "Kulas Light",
  "suite": "Apt. 556",
  "city": "Gwenborough",
  "zipcode": "92998-3874",
  "geo": {
    "lat": "-37.3159",
    "lng": "81.1496"
  }
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
  "name": "Romaguera-Crona",
  "catchPhrase": "Multi-layered client-server neural-net",
  "bs": "harness real-time e-markets"
}
},
// And So on upto 10 id places.

Теперь мне нужно получить данные на моем сайте, используя php cURL.

Мой PHP-код выглядит так:

$url = "https://jsonplaceholder.typicode.com/users" ;

$ch = curl_init() ;
curl_setopt($ch, CURLOPT_URL, $url) ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch) ;

$id = 1;
$data = json_decode($result) ;
foreach ($data as $mydata) {
  if ($mydata["id"] == $id) {
 echo $mydata["address"]["street3"] ;
 break ;
}
}

Но я получаю сообщение об ошибке:

Невозможно использовать объект типа stdClass в качестве массива

1 Ответ

0 голосов
/ 23 апреля 2019

second param Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы.

$data = json_decode($result,true) ;
foreach ($data as $mydata) {
  if ($mydata["id"] == $id) {
      echo $mydata["address"]["street"] ;//changes `street3` is not there
      break ;
  }
}

По умолчанию json_decode вернет вам объекты, и если вы хотите использовать [] синтаксис, вам нужен ассоциативный массив, и только для этого вам нужно передать второй параметр true пожалуйста, обратитесь к этому json_decode для дальнейших запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...