php计算两个位置之间的距离 根据经纬度 PHP

/**
 * 求两个已知经纬度之间的距离,单位为米
 * 
 * @param lng1 $ ,lng2 经度
 * @param lat1 $ ,lat2 纬度
 * @return float 距离,单位米
 * @author www.Alixixi.com 
 */
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;
}

杨佳乐 发布于  2024-4-30 10:50 

thinkphp、thinkcmf屏蔽未定义数组下标错误 PHP

error_reporting(E_ERROR | E_WARNING | E_PARSE);

杨佳乐 发布于  2024-4-30 10:49 

php mysql 根据经纬度计算距离并排序 PHP

$lat=39.950273;
$lng=116.550167;

$sql="
        SELECT
            *,
            ROUND(
                6378.138 * 2 * ASIN(
                    SQRT(
                        POW(
                            SIN(
                                (
                                    {$lat} * PI() / 180 - lat * PI() / 180
                                ) / 2
                            ),
                            2
                        ) + COS({$lat} * PI() / 180) * COS(lat * PI() / 180) * POW(
                            SIN(
                                (
                                    {$lng} * PI() / 180 - lng * PI() / 180
                                ) / 2
                            ),
                            2
                        )
                    )
                ) * 1000
            ) AS juli
        FROM
            ".tablename('tablename表名')."
        ORDER BY
            juli ASC
    ";

    $list=pdo_fetchall($sql);

杨佳乐 发布于  2024-4-30 10:48 

MySQL LIKE 查找带反斜线“\”的记录 MySQL

解决方法是在反斜线“\前加“\\”三个反斜杠。

SELECT
    *FROM
    表名 AS aWHERE
    a.字段 LIKE 'CONCAT('%', '\\\\2016-07-20\\\\qc0npwqe.3v4', '%')

其他场景,数据库存储json_encode数据,查询中文

=json_encode= preg_replace= str_replace.=........
标签: MySQL

杨佳乐 发布于  2024-4-30 10:47 

PHP 面向对象单例模式记录

1.单例模式就是设计的类最多只能得到一个对象

2.单例模式的设计规范是“三私一公”

私有化构造方法: 禁止在类的外部无限实例化对象

私有化克隆方法: 禁止对象无限克隆对象

私有化静态属性: 保存类内部实例化得到的对象 (防止被外部更改)

公有化静态方法: 允许外部通过调用类内部方法获取对象

该方法内大致逻辑 获取静态属性,验证是否已经实例化为当前类对象,如果实例化则返回该属性,如果未实例化则 new self();赋值给该属性并返回

3.单例模式如果还有其他诉求,可以在类中增加相应的其他类成员(方法)

4.单例模式的目的是为了保护资源的唯一性

<?php

class demo
{

    //私有化静态属性
    private static $obj = null;

    //私有化构造方法,防止外部实例化
    private function __construct(){}

    //共有获取实例方法
    public static function getInstance()
    {
        if(self::$obj instanceof demo){
            return self::$obj;
        }else{
            self::$obj=new self();
            return self::$obj;
        }

    }

    //私有化克隆方法,防止外部克隆实例
    private function __clone(){}

}

$demo=demo::getInstance();
$demo1=demo::getInstance();

var_dump($demo);
var_dump($demo1);
//object(demo)#1 (0) { } object(demo)#1 (0) { }
标签: 单例模式

杨佳乐 发布于  2024-4-30 10:46