当前位置:  编程技术>php
本页文章导读:
    ▪php计算两个经纬度地点之间距离的方法分享      用php计算两个指定的经纬度地点之间的距离,代码:   <?php /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位米 *@edit www. **/ f.........
    ▪php 权重计算方法(抽奖)      用php实现用户投资,当用户点击投资时,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖)。 思路: 此奖值出现的概率要依次降低,于是就有了一个类似权重计算的.........
    ▪php自动识别字符集并转换的实例详解      在php程序中,不同编码格式的页面间进行数据传送时,难免会出现乱码。 本文给出的这个函数: 因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字.........

[1]php计算两个经纬度地点之间距离的方法分享
    来源: 互联网  发布时间: 2013-12-24

用php计算两个指定的经纬度地点之间的距离,代码:
 

<?php
/**
*求两个已知经纬度之间的距离,单位为米
*@param lng1,lng2 经度
*@param lat1,lat2 纬度
*@return float 距离,单位米
*@edit www.
**/
function getdistance($lng1,$lat1,$lng2,$lat2){
 //将角度转为狐度
 $radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度
 $radLat2=deg2rad($lat2);
 $radLng1=deg2rad($lng1);
 $radLng2=deg2rad($lng2);
 $a=$radLat1-$radLat2;
 $b=$radLng1-$radLng2;
 $s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;
 return $s;
}
?>

举例,“上海市延安西路2055弄”到“上海市静安寺”的距离:
上海市延安西路2055弄 经纬度:31.2014966,121.40233369999998
上海市静安寺 经纬度:31.22323799999999,121.44552099999998

那么:
 

代码示例:
echo getdistance(31.2014966,121.40233369999998,31.22323799999999,121.44552099999998);

结果为:4970.4248747365 ,约4970米,大约10里路。

几乎接近真实的距离了,看来用php计算两个经纬度地点之间的距离,还是靠谱的,呵呵。


    
[2]php 权重计算方法(抽奖)
    来源: 互联网  发布时间: 2013-12-24

用php实现用户投资,当用户点击投资时,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖)。
思路:
此奖值出现的概率要依次降低,于是就有了一个类似权重计算的一个算法了。

以下分享下这个权重计算的实现方法。

此实例仅适合二维数组且一维为数字索引的数组,数据数组结构如下:

$data=array(
 0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),
 1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),
 2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),
 3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60')
);

简单计算权重的算法,如下:

<?php
// 权重数值越高,被返回的概率越大
// edit by www.
function countWeight($data){
 $weight=0;
 $temp=array();
 foreach($data as $v){
  $weight+=$v['weight'];
  for($i=0;$i<$v['weight'];$i++){
   $temp[]=$v;//放大数组
  }
 }
 $int=mt_rand(0,$weight-1);//获取一个随机数
 $result=$temp[$int];
 return $result;
}
?>

输出结果:

Array
(
    [id] => 4
    [name] => 谢谢抽奖
    [weight] => 60
)

有兴趣的朋友,可以继续完善下本程序,做出一个漂亮的php抽奖程序。

您可能感兴趣的文章:
学习php抽奖程序之几率算法
php抽奖程序(抽取三名幸运观众)的核心代码
php抽奖小程序代码一例
php分时间段的抽奖程序代码
php抽奖计算的例子


    
[3]php自动识别字符集并转换的实例详解
    来源: 互联网  发布时间: 2013-12-24

在php程序中,不同编码格式的页面间进行数据传送时,难免会出现乱码。

本文给出的这个函数:
因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。
而英文不管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。
如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。

此函数用来对字符串进行检查和转码的。

文件字符集的检查与转码,代码如下:

<?php
/**
* 自动识别字符集并转换
* edit by www.
* date: 2013/8/2
*/
function safeEncoding($string, $outEncoding = 'UTF-8') {
    $encoding = "UTF-8";
    for ($i = 0; $i < strlen($string); $i++) {
        if (ord($string{$i}) < 128)
            continue;
        if ((ord($string{$i}) & 224) == 224) {
            //第一个字节判断通过 
            $char = $string{++$i};
            if ((ord($char) & 128) == 128) {
                //第二个字节判断通过 
                $char = $string{++$i};
                if ((ord($char) & 128) == 128) {
                    $encoding = "UTF-8";
                    break;
                }
            }
        }
        if ((ord($string{$i}) & 192) == 192) {
            //第一个字节判断通过 
            $char = $string{++$i};
            if ((ord($char) & 128) == 128) {
                //第二个字节判断通过 
                $encoding = "GB2312";
                break;
            }
        }
    }
    if (strtoupper($encoding) == strtoupper($outEncoding))
        return $string;
    else
        returniconv($encoding, $outEncoding, $string);
}
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
编程技术其它 iis7站长之家
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3