PHP в то время как цикл curl_exec - PullRequest
0 голосов
/ 13 января 2019

Я работаю над созданием div для каждого результата из запроса curl_exec json GET. Я попробовал приведенный ниже код, используя cURL в PHP. Когда я запускаю этот код, ничего не получается из foreach.

    //API Url
    $url = 'https://api.clover.com:443/v3/merchants/'.$merchantid.'/categories/';

    //Initiate cURL.
    $ch = curl_init($url);

    $headers = array(
        'Content-type: application/json',
        'Authorization: Bearer '.$authtoken.' ',
    );

    //Tell cURL that we want to send a GET request.
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

    //Set the content type to application/json
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    //Execute the request
    $resp = curl_exec($ch);
    $respArray = json_decode($resp, true);

    foreach($respArray as $key => $value) {
      echo $key . " : " . $value;
    }
    curl_close($ch);

Возвращает следующее:

   {
      "elements": [
        {
          "id": "QWS8MSMAT49E6",
          "name": "Other",
          "sortOrder": 2
        },
        {
          "id": "35K000MJVVFHE",
          "name": "Pizza",
          "sortOrder": 1
        }
      ],
      "href": "http://api.clover.com/v3/merchants/{[MID]}/categories?limit=100"
    }

Я пытаюсь получить информацию выше в div, например:

example output

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я решил проблему с добавлением

curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);

к коду. Как было объяснено Здесь (Михай)

" По умолчанию curl_exec выводит данные, полученные с сервера, на стандартный вывод, так что ваша переменная $ response на самом деле не имеет фактические данные ответа в нем. Если вы хотите получить данные в переменной установите параметр CURLOPT_RETURNTRANSFER перед вызовом curl_exec."

И Ответ Мартина Цайтлера Правильно был удален true из json_decode()

0 голосов
/ 14 января 2019

думаю, что это работает так:

$data = json_decode($resp);
foreach($data->elements as $element) {
  echo '<div id="group_'.$element->id.'" class="product_group">'.$element->name.'</div>';
}
...