PHP扩展开发入门教程

一直想写PHP扩展开发教程,真正要写的时候不知道从何下手,也总感觉理解不到位。先入门下手,以后再分享调用C开发的.so动态库。不得不说PHP的成功原因之一有大量可以使用的扩展。

为什么使用扩展

1、开发未支持的技术。比如想让PHP支持新的技术或者数据库等。

2、应用非常注重效率。

继续阅读

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

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

继续阅读