Проблема с stdClass ::

Я получаю эту ошибку, когда выполняю код для расчета расстояния с помощью API Карт Google.

Я знаю, что ошибка в foreach { .... } но даже ища похожие вопросы здесь в stackoverflow, я не смог найти решение.


Ошибка:

Error: [8] Undefined property: stdClass::$distance
Webmaster has been notified.
Error: [8] Trying to get property of non-object
Webmaster has been notified.

Код

function distancia($origem, $destino) {
$origem = urlencode($origem);
$destino = urlencode($destino);
$data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origem&destinations=$destino&language=pt-PT&sensor=false");
$data = json_decode($data);
$distancia = 0;

foreach ($data->rows[0]->elements as $road) {
$distancia += $road->distance->value;
}

$distancia = $distancia / 1000; //Conversão de metros para kilometros
$distancia = round($distancia,1) . ' km';
return $distancia;
}

0

Решение

Вероятно, это зависит от того, какие данные у вас есть в $origem а также $destino, Если вы передаете, например: Warsaw а также Berlin вы не получите уведомление или ошибки просто 571.7 km в результате.

Если вы передаете данные, которые Google не может разрешить, вероятно, $road имеет значение null или false, поэтому вы должны добавить дополнительную проверку внутри цикла.

Например вместо:

$distancia += $road->distance->value;

возможно:

if ($road) {
$distancia += $road->distance->value;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector