123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- * 随机红包的金额生产
- * @param total float 总金额
- * @param num float 数量
- * @param min float 每个人最少能收到0.01元
- * @return float 随机钱
- **/
- function pocket($total, $num, $min = 0.01){
- for ($i=1; $i<$num; $i++) {
- $safe_total = ($total-($num-$i)*$min)/($num-$i);
- $money = mt_rand($min*100,$safe_total*100)/100;
- $total = $total-$money;
- $arr['res'][$i] = [
- 'i' => $i,
- 'money' => $money,
- 'total' => $total
- ];
- }
- $arr['res'][$num] = array('i'=>$num,'money'=>$total,'total'=>0);
- return $arr['res'][rand(1,$num)]['money'];
- }
- /**
- * 数组转中文日期
- * @param array days [0,1,3,4,5,6,7]
- **/
- function weekdays(array $days){
- $weekarray = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
- $week = [];
- foreach ($days as $value) {
- $week[] = $weekarray[$value];
- }
- return $week;
- }
- /**
- * 百度地图---->腾讯地图
- * @param double $lat 纬度
- * @param double $lng 经度
- * @return array();
- */
- function bdMap_to_txMap($lat,$lng){
- $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- $x = $lng - 0.0065;
- $y = $lat - 0.006;
- $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
- $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
- $lng = $z * cos($theta);
- $lat = $z * sin($theta);
- return array('lng'=>$lng,'lat'=>$lat);
- }
-
- /**
- * 腾讯地图---->百度地图
- * @param double $lat 纬度
- * @param double $lng 经度
- */
- function txMap_to_bdMap($lat,$lng){
- $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- $x = $lng;
- $y = $lat;
- $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
- $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
- $lng = $z * cos($theta) + 0.0065;
- $lat = $z * sin($theta) + 0.006;
- return array('lng'=>$lng,'lat'=>$lat);
- }
- /**
- * 根据经纬度算距离,返回结果单位是公里,先纬度,后经度
- * @param $lat1
- * @param $lng1
- * @param $lat2
- * @param $lng2
- * @return float|int
- */
- function getDistance($lng1,$lat1,$lng2,$lat2){
- $earthRadius = 6367000;
- $lat1 = deg2rad($lat1);
- $lng1 = deg2rad($lng1);
- $lat2 = deg2rad($lat2);
- $lng2 = deg2rad($lng2);
- $calcLongitude = $lng2 - $lng1;
- $calcLatitude = $lat2 - $lat1;
- $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
- $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
- $calculatedDistance = $earthRadius * $stepTwo;
- $distance = round($calculatedDistance);
- if($distance <= 500){
- return $distance.'m';
- }else{
- return round($distance/1000,1).'km';
- }
- }
- /**
- * @description:根据数据
- * @param {dataArr:需要分组的数据;keyStr:分组依据}
- * @return:
- */
- function dataGroup(array $dataArr,string $keyStr){
- $newArr = [];
- foreach ($dataArr as $val) {
- $newArr[$val[$keyStr]][] = $val;
- }
- return $newArr;
- }
|