сравнить расстояние вождения от массива JSON - PullRequest
0 голосов
/ 26 июня 2018

Я использую googledistancematrix API для расчета расстояния от логина до всех моих полей в БД. Это код моего контроллера.

$field_list = Field::all();
for ($i=0; $i < count($field_list); $i++)
    { 
        $destination = $field_list[$i]['latitude'] . "," . $field_list[$i]['longitude'];
        $details = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destination&mode=driving&sensor=false";
        $json = file_get_contents($details);
        $details = json_decode($json, TRUE);
        if (count($details['destination_addresses']) > 0 )
        {
            $distance = $details['rows'][0]['elements'][0]['duration']['text'];
            $field_list[$i]->distance = $distance;
        }
    }

К этому я получаю следующий ответ:

https://jsoneditoronline.org/?id=a35cedef327244ceb19ed35a2a4c8ddf

Но я хочу показать только те поля, чьи distance < or = 30 mins. Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете использовать strtotime

$min = strtotime("30 mins");
$val = strtotime("0 hours 10 mins");

echo $min <= $val? "yes":"no";

( здесь , если вы хотите проверить это)

в вашем случае

if (count($details['destination_addresses']) > 0 ){
    $min = strtotime("30 mins");
    $distance = $details['rows'][0]['elements'][0]['duration']['text'];

    if($min <= strtotime($distance)){
           //do your logic
    }
}
0 голосов
/ 26 июня 2018

Преобразовать время в секунды с помощью strtotime () очень просто:

$time=strtotime($details['rows'][0]['elements'][0]['duration']['text']);
if (($time-time()>1800) {
    // ignore this element, probably in loop so do a continue
}

Это основано на использовании приведенной выше строки примера, которая предназначена только для одного элемента. Вам нужно будет обернуть его циклом и выполнить вычисления для каждого элемента.

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