Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 邮政编码之间的完整距离-但我怎么能只有1位小数?_Php_Postal Code - Fatal编程技术网

Php 邮政编码之间的完整距离-但我怎么能只有1位小数?

Php 邮政编码之间的完整距离-但我怎么能只有1位小数?,php,postal-code,Php,Postal Code,我有一个惊人的代码,可以计算出两个邮政编码之间的距离;距离(英里)和驾驶时间 现在的问题是——我得到的距离非常长(例如:10.2454014英里) 我只希望它只有一个小数位(如10.2英里)。 另外,如果不太难的话——当按原样运行上述代码时,您会注意到驾驶时间是80分钟。那太傻了有人知道如何让它在超过60分钟时以小时表示时间,在低于60分钟时以分钟表示时间吗? 如果有人能帮上忙,那就太棒了——这段代码对人们真的很有用 <?php function get_driving_i

我有一个惊人的代码,可以计算出两个邮政编码之间的距离;距离(英里)和驾驶时间

现在的问题是——我得到的距离非常长(例如:10.2454014英里) 我只希望它只有一个小数位(如10.2英里)。

另外,如果不太难的话——当按原样运行上述代码时,您会注意到驾驶时间是80分钟。那太傻了有人知道如何让它在超过60分钟时以小时表示时间,在低于60分钟时以分钟表示时间吗?

如果有人能帮上忙,那就太棒了——这段代码对人们真的很有用

<?php
        function get_driving_information($start, $finish, $raw = false)
{
    if(strcmp($start, $finish) == 0)
    {
        $time = 0;
        if($raw)
        {
            $time .= ' seconds';
        }

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

    $start  = urlencode($start);
    $finish = urlencode($finish);

    $distance   = 'unknown';
    $time       = 'unknown';

    $url = 'http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$finish.'&sensor=false';
    if($data = file_get_contents($url))
    {
        $xml = new SimpleXMLElement($data);

        if(isset($xml->route->leg->duration->value) AND (int)$xml->route->leg->duration->value > 0)
        {
            if($raw)
            {
                $distance = (string)$xml->route->leg->distance->text;
                $time     = (string)$xml->route->leg->duration->text;
            }
            else
            {
                $distance = (int)$xml->route->leg->distance->value / 1000 / 1.609344;
                $time     = (int)$xml->route->leg->duration->value/ 60;
            }
        }
        else
        {
            throw new Exception('Could not find that route');
        }

        return array('distance' => $distance, 'time' => $time);
    }
    else
    {
        throw new Exception('Could not resolve URL');
    }
}

try
{
    $info = get_driving_information('fy1 4bj', 'ls1 5ns');
    echo $info['distance'].' miles ' . 'That\'s about ' .$info['time'].' minutes drive from you';
}
catch(Exception $e)
{
    echo 'Caught exception: '.$e->getMessage()."\n";
}
?>
route->leg->duration->value)和(int)$xml->route->leg->duration->value>0)
{
如果($raw)
{
$distance=(字符串)$xml->route->leg->distance->text;
$time=(字符串)$xml->route->leg->duration->text;
}
其他的
{
$distance=(int)$xml->route->leg->distance->value/1000/1.609344;
$time=(int)$xml->route->leg->duration->value/60;
}
}
其他的
{
抛出新异常(“找不到该路由”);
}
返回数组('distance'=>$distance,'time'=>$time);
}
其他的
{
抛出新异常('无法解析URL');
}
}
尝试
{
$info=获取驾驶信息(“fy1 4bj”,“ls1 5ns”);
echo$info['distance'].'miles'.'这是关于'$info['time'.'的信息。'minutes drive from your';
}
捕获(例外$e)
{
回显“捕获的异常:”。$e->getMessage()。“\n”;
}
?>
使用数字格式()将十进制/浮点值格式化为所需的小数点。使用gmdate()函数将时间(以秒为单位)转换为格式化值,如:小时:分钟:秒

// Format Distance
$info['distance'] = number_format($info['distance'], 2);

// Format time
$info['time'] = gmdate('H:i:s', ($info['time'] * 60));

// Output
echo $info['distance'] .' miles ' . 'That\'s about ' .$info['time'].' minutes drive from you';

就舍入而言,只需执行以下操作:

echo round($info['distance'], 1) . ' miles '
关于你的80分钟->1小时20分钟,请参阅以下帖子:

RTFM:您尝试过什么样的方法?我在编码的上半部分尝试过这种“数字格式”,但在阅读了第一个响应后,我意识到我应该把它放在输出的内容中!我现在只需要知道如何区分小时和分钟:)那就行了,我一直把数字_格式放在最上面的编码中,而不是放在我回应的内容中。现在只需要确定小时和分钟!谢谢