我正在使用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
的那些字段。
谢谢
答案 0 :(得分:1)
使用strtotime()将时间转换为秒很简单,如下所示:
$time=strtotime($details['rows'][0]['elements'][0]['duration']['text']);
if (($time-time()>1800) {
// ignore this element, probably in loop so do a continue
}
这是基于上面的示例行,该示例行仅适用于单个元素。您需要将其包装成一个循环,并对每个元素执行计算。
答案 1 :(得分:0)
您可以使用 strtotime
$min = strtotime("30 mins");
$val = strtotime("0 hours 10 mins");
echo $min <= $val? "yes":"no";
({here,如果要测试)
就您而言
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
}
}