php多维数组排序 PHP
//根据orderzmoney 降序排序 array_column 取出数组 orderzmoney字段数组
array_multisort(array_column($tylist,'orderzmoney'),SORT_DESC,$tylist);
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;
}
thinkphp、thinkcmf屏蔽未定义数组下标错误 PHP
error_reporting(E_ERROR | E_WARNING | E_PARSE);
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);
php 面向对象工厂模式记录 PHP
工厂模式是一种按需生产对象的模式
工厂模式通常是需要在大型项目中,会出现很多相同功能的类,此时可以使用工厂产生对象
工厂模式的有点是能够方便后期对类的维护(更名)
工厂模式的缺点是随着功能的增加,会需要增加很多开发量(开发多个工厂)
demo
<?php
class man{
public function display(){
echo '这是男人类<br/>';
}
}
class woman{
public function display(){
echo '这是女人类<br/>';
}
}
//工厂类
class factory{
//工厂方法,专门生产类的对象 (默认1)
/*public function getInstance($classname){
return new $classname();
}*/
//静态工厂方法,专门生产类的对象 (默认2)
/*public static function getInstance($classname){
return new $classname();
}*/
//封装匿名工厂方法
public static function getInstance($flag){
switch ($flag){
case "m":
return new man();
case "w":
return new woman();
default:
return null;
}
}
}
//默认1调用方式,需要实例化工厂类,且无法解决类更名需要改动很多地方的缺点
/*$f=new factory();
$man=$f->getInstance('man');
$man->display();
$woman=$f->getInstance('woman');
$woman->display();*/
//默认2调用模式,无需实例化工厂类,但无法解决类更名需要改动很多地方的缺点
/*$man=factory::getInstance('man');
$man->display();
$woman=factory::getInstance('woman');
$woman->display();*/
//封装匿名调用模式 当man / woman类名变更时,可以很方便的更改,并且可隐藏类的真实名称
$man=factory::getInstance('m');
$man->display();
$woman=factory::getInstance('w');
$woman->display();
标签: 工厂模式