个人常用的一些方法记录
/**
* 返回错误
*
* @param int $err_no
* @param string $err_msg
* @param array $data
* @return array
*/
function returnError($err_no = 0, $err_msg = '', $data = [])
{
// 错误配置
$config = config('error');
// 错误信息
$error = [
'err_no' => $err_no,
'err_msg' => empty($err_msg) ? $config[$err_no] : $err_msg,
'data' => $data
];
// 返回
return $error;
} /**
* 错误响应
*
* @param int $err_no
* @param string $err_msg
* @param array $data
* @param string $jsonp
* @return \Illuminate\Http\Response
*/
function response($err_no = 0, $err_msg = '', $data = [], $jsonp = '')
{
// 错误配置
$config = config('error');
// 错误信息
$error = [
'err_no' => $err_no,
'err_msg' => empty($err_msg) ? $config[$err_no] : $err_msg,
'data' => $data
];
// 格式化
$result = response()->json($error);
empty($jsonp) || $result->setCallback($jsonp);
// 返回
return $result;
} /**
* CURL
*
* @param string $url
* @param string $type
* [GET|POST]
* @param array|string $data
* @param array $header
* @return bool|string
*/
function curlRequest($url = '', $type = 'GET', $data = '', $header = [])
{
// 参数校验
if (empty($url) || ! in_array(strtoupper($type), [
'GET',
'POST',
'PUT',
'DELETE'
])) {
return false;
}
// 初始化
$ch = curl_init();
if (! $ch) {
return false;
}
// 请求参数
$data = is_array($data) ? http_build_query($data) : $data;
// 请求方式
if (strtoupper($type) == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
if (strtoupper($type) == 'GET') {
empty($data) || $url .= '?' . $data;
}
if (strtoupper($type) == 'PUT') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
if (strtoupper($type) == 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
// 通用配置
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 头信息
if (! empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
// 执行请求
$result = curl_exec($ch);
// 错误信息
// $err_no = curl_errno($ch);
// $err_info = curl_getinfo($ch);
// 关闭资源
curl_close($ch);
// 返回
return $result;
} /**
* 数组转XML[解析:simplexml_load_string($param, 'SimpleXMLElement', LIBXML_NOCDATA)]
*
* @param array $param
* @return string
*/
function convertXml($param = [])
{
// 初始化
$xml = '';
// 循环
foreach ($param as $k => $v) {
$xml .= "<{$k}><![CDATA[{$v}]]></{$k}>";
}
// 返回
return sprintf('<xml>%s</xml>', $xml);
} /**
* 写入日志|自定义文件
*
* @param string $file
* @param array $logs
* @return bool
*/
function debug($file = 'debug', $logs = [], $code = 'Debug')
{
// 文件路径
$path = storage_path("logs/{$file}.log");
// 日志内容
$data = sprintf('[%s] %s %s%s', date('Y-m-d H:i:s'), $code, json_encode($logs, 320), PHP_EOL);
// 写入日志
$result = file_put_contents($path, $data, FILE_APPEND);
// 返回
return $result === false ? false : true;
} /**
* 导出CSV
*
* @param string $filename
* @param string $data
*/
function exportCsv($filename = '', $data = array())
{
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename={$filename}.csv");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
$output = '';
foreach ($data as $v) {
foreach ($v as $v2) {
$output .= mb_convert_encoding($v2, 'GBK', 'UTF-8') . ',';
}
$output .= "\n";
}
exit($output);
} /**
* 获取当前URL
*
* @return string
*/
function getCurrUrl()
{
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self . (isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : $path_info);
$curr_url = $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url;
return urlencode($curr_url);
} /**
* 生成唯一ID
*
* @return string
*/
function uniqueId()
{
// 时间+随机数
return sprintf('%s%04s', date('YmdHis'), mt_rand(0, 9999));
}/**
* 格式化金额|四舍五入保留2位小数
*
* @param float $money
* @return string
*/
function moneyFormat($money = 0)
{
// 格式化并返回
return sprintf('%.2f', floatval($money));
} /**
* 数组排序
*
* @param string $key
* @param array $arr
* @param number $order
* @return boolean|multitype
*/
function arrSort($key = '', $arr = [], $order = 1)
{
$res = [];
// 产生结构数组
foreach ($arr as $k => $v) {
$res[$v[$key]] = isset($res[$v[$key]]) ? array_merge($res[$v[$key]], [
$k
]) : [
$k
];
} if ($order == 1) {
// 升序
ksort($res);
} elseif ($order == 0) {
// 降序
krsort($res);
} else {
return false;
}
$rs = [];
// 组装数组
foreach ($res as $value) {
foreach ($value as $n) {
$rs[] = $arr[$n];
}
}
// 返回结果
return $rs;
} /**
* 计算每期的日期(当前日减一天|当月不足则取最后一天)
*
* @param string $start_date
* @param int $total_month
* @param bool $return_last
* @return array|string
*/
function calculateDate($start_date, $total_month, $return_last = false)
{
// 开始时间
$start_day = intval(date('j', strtotime($start_date)));
$start_time = strtotime('-1 day', strtotime($start_date));
// 当前年月日
$curr_year = intval(date('Y', $start_time));
$curr_month = intval(date('n', $start_time));
$curr_day = intval(date('j', $start_time));
// 格式化数组
$date = [
$start_date
];
// 循环计算
for ($i = 1; $i <= $total_month; $i ++) {
// 年
if (($curr_month + $i) % 12 == 0) {
$year = $curr_year + ($curr_month + $i) / 12 - 1;
} else {
$year = $curr_year + floor(($curr_month + $i) / 12);
}
// 月
$month = ($curr_month + $i) % 12;
$month = ($month == 0 ? 12 : $month);
// 日
$curr_month_days = intval(date('t', strtotime("{$year}-{$month}-01")));
$day = $start_day == 1 ? $curr_month_days : min($curr_day, $curr_month_days);
// 当期时间
$date[] = sprintf('%04d-%02d-%02d', $year, $month, $day);
}
// 返回
if ($return_last) {
// 返回最后一期
return array_pop($date);
} else {
// 返回所有日期
return $date;
}
} /**
* 验证手机是否有效
*/
function isMobile($subject = '')
{
$pattern = "/^1[3|4|5|7|8][0-9]{9}$/";
if (preg_match($pattern, $subject)) {
return true;
}
return false;
} /**
* 数字转中文
*
* @param unknown $num
* @param number $m
*/
function numberToChinese($num)
{
$CNum = [
[
'零',
'一',
'二',
'三',
'四',
'五',
'六',
'七',
'八',
'九'
],
[
'',
'十',
'百',
'千'
],
[
'',
'万',
'亿',
'万亿'
]
];
// 验证是否是数字
if (! is_numeric($num)) {
return false;
} $flt = '';
if (is_integer($num)) {
$num = strval($num);
} else
if (is_numeric($num)) {
$num = strval($num);
$rs = explode('.', $num, 2);
$num = $rs[0];
$flt = $rs[1];
} $len = strlen($num);
$num = strrev($num);
$chinese = ''; for ($i = 0, $k = 0; $i < $len; $i += 4, $k ++) {
$tmp_str = '';
$str = strrev(substr($num, $i, 4));
$str = str_pad($str, 4, '0', STR_PAD_LEFT);
for ($j = 0; $j < 4; $j ++) {
if ($str{$j} !== '0') {
$tmp_str .= $CNum[0][$str{$j}] . $CNum[1][4 - 1 - $j];
}
}
$tmp_str .= $CNum[2][$k];
$chinese = $tmp_str . $chinese;
unset($str);
}
if ($flt !== '') {
$str = '';
for ($i = 0; $i < strlen($flt); $i ++) {
$str .= $CNum[0][$flt{$i}];
}
$chinese .= "点{$str}";
}
return $chinese;
} /**
* 数字金额转换成中文大写金额的函数
* String Int $num 要转换的小写数字或小写字符串
* return 大写字母
* 小数位为两位
*/
function getAmount($num)
{
$c1 = "零壹贰叁肆伍陆柒捌玖";
$c2 = "分角元拾佰仟万拾佰仟亿";
$num = round($num, 2);
$num = $num * 100;
if (strlen($num) > 10) {
return "数据格式错误";
}
$i = 0;
$c = "";
while (1) {
if ($i == 0) {
$n = substr($num, strlen($num) - 1, 1);
} else {
$n = $num % 10;
}
$p1 = substr($c1, 3 * $n, 3);
$p2 = substr($c2, 3 * $i, 3);
if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
$c = $p1 . $p2 . $c;
} else {
$c = $p1 . $c;
}
$i = $i + 1;
$num = $num / 10;
$num = (int) $num;
if ($num == 0) {
break;
}
}
$j = 0;
$slen = strlen($c);
while ($j < $slen) {
$m = substr($c, $j, 6);
if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
$left = substr($c, 0, $j);
$right = substr($c, $j + 3);
$c = $left . $right;
$j = $j - 3;
$slen = $slen - 3;
}
$j = $j + 3;
} if (substr($c, strlen($c) - 3, 3) == '零') {
$c = substr($c, 0, strlen($c) - 3);
}
if (empty($c)) {
return "零元整";
} else {
return $c . "整";
}
}

常用PHP方法的更多相关文章

  1. WebAPi添加常用扩展方法及思维发散

    前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. We ...

  2. StringUtils中的常用的方法

    org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...

  3. JOptionPane类提示框的一些常用的方法

    JOptionPane类提示框的一些常用的方法 XMLOracleSwing 最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了 ...

  4. 常用js方法

    function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...

  5. jQuery操作Table tr td常用的方法

    虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ...

  6. iOS常用公共方法

      iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...

  7. org.apache.commons.lang.StringUtils中常用的方法

    org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...

  8. 常用js方法整理common.js

    项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...

  9. Java获取各种常用时间方法大全

    Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...

  10. .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法

    1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...

随机推荐

  1. 在小程序中修改上一个页面里data中的数据调用上一个页面的方法

    //获取已经打开的页面的数组 var pages = getCurrentPages(); //获取上一个页面的所有的方法和data中的数据  var lastpage = pages[pages.l ...

  2. Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.

    System.Data.OracleClient 已经过时了.微软不再支持它. 因此,我建议你为. NET 使用Oracle数据提供程序:ODP.Net. 你可以从以下位置下载: 版本:Release ...

  3. 在Activities之间导航

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...

  4. PDF转WORD工具推荐:迅捷PDF转换器6.8版

    迅捷PDF转换器是一款功能强大的pdf转换成word转换器软件.它不仅支持pdf转换成word,word转pdf,还可以实现excel,ppt,jpg与pdf文件的一键式转换.有了它,你可以很轻松转换 ...

  5. ECharts.js学习(二)动态数据绑定

    Echarts 数据绑定 简单的统计表已经可以生成,不过之前图标数据都是直接写在参数里面的,而实际使用中,我们的数据一般都是异步读取的.EChart.js对于数据异步读取这块提供了异步加载的方法. 绑 ...

  6. (持续更新) CSS属性持续记录

    可以去除ul的li标签自带的圆点list-style-type: none; 可以将自己的光标改变样式:cursor: pointer;

  7. shouldRasterize 光栅化、(缓存)复用、内存、内容稳定

    使用场景:稳定的视图(layer)被反复使用或进行动画: 本质:牺牲内存解放cpu: 反例:牺牲内存牺牲cpu. 单次使用或者视图有变动,shouldRasterize不会有任何用途,反而会牺牲内存. ...

  8. 程序人生:02我来告诉你,一个草根程序员如何进入BAT

    本文摘自左潇龙博客,原文出处:http://www.cnblogs.com/zuoxiaolong/p/life54.html 引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字 ...

  9. curl 抓取页面信息

    <?php // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "www" ...

  10. weblogic之CVE-2016-3510反序列化分析

    将反序列化的对象封装进了weblogic.corba.utils.MarshalledObject,然后再对MarshalledObject进行序列化,生成payload字节码.由于Marshalle ...