Я получаю неопределенное смещение после передачи запросов в функцию - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь получить время, необходимое для достижения расстояния, используя Google distantmatrix. Я получаю эту ошибку после передачи необходимых аргументов в функцию.

Public function GetDrivingDistance($lat1, $lat2, $long1, $long2) {

  $data1 = setting::where('id',1)->first();

  $key = $data1->key;

  $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&mode=driving&language=pl-PL"."&key=".$key;

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  curl_setopt($ch, CURLOPT_PROXYPORT, 3128);

  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

  $response = curl_exec($ch);

  curl_close($ch);

  $response_a = json_decode($response, true);

  $dist = $response_a['rows'][0]['elements'][0]['distance']['text'];

  $time = $response_a['rows'][0]['elements'][0]['duration']['text'];

  return array('distance' => $dist, 'time' => $time);
}

Ошибка:

undefined offset: 0 

При $ dist = $ response_a ['row'] [0] ['elements'] [0] ['distance'] ['text'];

1 Ответ

0 голосов
/ 19 января 2020

Попробуйте использовать вспомогательную функцию data_get следующим образом:

$dist = data_get($response_a, 'rows.0.elements.0.distance.text');

$time = data_get($response_a, 'rows.0.elements.0.duration.text');

Используя метод data_get, будет возвращено null, если указанный ключ не найден вместо получения ошибки.

Подробнее см. Laravel документы .

...