月度归档:2016年01月

PHP汉字转拼音支持声调和首字母

项目的需要将汉字转换为首字母。特百度一番,找到了一个还不错的。经过验证,性能还不错的。

测试代码如下:

$str = "忠诚于梦想的人才可能胜利\n";
echo "开始转换\n";
$pinyin = new Pinyin();
echo "\n转成带无声调的汉语拼音 \n";
echo $pinyin->TransformWithoutTone($str)."\n\n";
echo "转成带有声调的汉语拼音 \n";
echo $pinyin->TransformWithTone($str)."\n\n";
echo "转成汉语拼音首字母 \n";
echo $pinyin->TransformUcwords($str)."\n\n";

继续阅读

MySQL查询重复记录方法以及简单理解

MySQL查询重复记录方法其实很简单。知道查询重复记录的方法后,自然要了解如何删除重复记录的方法。做下笔记记录下各个操作SQL语句、简单理解和使用过程中遇到的问题。

查询重复记录

SQL语句如下:


select * from table where tableId in (select tableId from table group by tableId having count(tableId) > 1)

原理:用哪些系列作为重复的标准,当这些列重复的个数大于1的情况下,判断此行记录为重复的。

继续阅读

PHP实现根据经纬度计算距离(已验证)

从网上学习根据经纬度计算距离的方法并且已验证。所以直接上代码:

/**
 * 根据两点间的经纬度计算距离
 * @param $lng1
 * @param $lat1
 * @param $lng2
 * @param $lat2
 * @return int
 */
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;
}

结论:

1、返回的单位是米(m)。

2、Google地图坐标和百度地图坐标相差1m左右。

继续阅读

PHP+MySQL实现附近地点查询功能

最近接触一个项目,需要根据经纬度计算附近的点。数据量为20w。

如果通过foreach循环MySQL数据库中经纬度,然后再结算距离,速度和性能都会很慢。学习了网上一个方法,特记录下来:

实现原理

算出当前经纬度周围的矩形的四个点,然后使用经纬度去直接匹配数据库中的记录。

map

红色部分为要求的搜索范围,绿色部分我们能间接得到的结果范围。

继续阅读

Swoole入门教程(一)

本篇文件主要介绍Swoole的作用、优势、场景以及学习经历。

Swoole的作用

官网第一句话是:重新定义PHP。其实也就是弥补、丰富和扩展了PHP。体现在:PHP的异步、网络和服务器方面。

异步:异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。

以上的这么多功能,丰富和扩展了PHP的。

继续阅读

PHP过滤字符串中所有空格

 

/**
 * 过滤字符串中的所有空格
 * @param $string
 * @return string
 */
public static function createUri($string)
{
    $search = array(" ", " ", "\n", "\r", "\t");
    $replace = array("", "", "", "", "");
    return str_replace($search, $replace, $string);
}