当前位置: 编程技术>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')
);
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
)
(
[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); } ?>
最新技术文章: