个人常用的一些方法记录
/**
* 返回错误
*
* @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. 用java实现从命令行接收多个数字,求和之后输出结果。

    用java实现从命令行接收多个数字,求和之后输出结果. 1 设计思想: (1)建立类. (2)输出参数个数. (3)定义int型的num和sum,分别用来存储参数和参数的和. (4)用for循环讲参数 ...

  2. 在 Azure 虚拟机中配置 Always On 可用性组(经典)

    在开始之前,请先假设现在可以在 Azure Resource Manager 模型中完成此任务. 我们建议使用 Azure Resource Manager 模型来进行新的部署. 请参阅 Azure ...

  3. MySQL5.7.20编译安装

    1:官网下载source code源码安装文件 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz 2:安装准备 ...

  4. Android开发精彩博文收藏——UI界面类

    本文收集整理Android开发中关于UI界面的相关精华博文,共大家参考!本文不定期更新! 1. Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各 ...

  5. C/S结构软件测试要点汇总

    C/S结构测试要点   1.安装/卸载: 1.安装包:完整性,安装包大小是否达到要求,显示基本信息是否正确,步骤是否明确,内容是否合理. 2.首次安装: 1)是否与其他已安装的软件冲突. 2)各种杀毒 ...

  6. UpdatePanel中用后台CS代码调用JS代码,先执行控件事件,后触发JS

    引用地址: http://www.cnblogs.com/silenkee/articles/1609831.html   页面中加入了UpdatePanel后,Response.Write(&quo ...

  7. December 28th 2016 Week 53rd Wednesday

    Knowledge is a treasure, but practice is the key to it. 知识是珍宝,而实践是获取她的钥匙. I know a lot, but what I r ...

  8. ZT 打工者买彩票中1000万 5年后变逃犯身上剩80元

    打工者买彩票中1000万 5年后变逃犯身上剩80元   2014-01-07 08:22 来源:都市快报 我有话说 挥霍—— 从800万到80元 在湖南永州零陵区富家桥镇茶叶湾村,陈某是不折不扣的名人 ...

  9. [EffectiveC++]item3:尽可能使用const

    将某些东西声明为const可以帮助编译器检测出错误用法,const 编译器强制实施bitwise constness,但是你code的时候应该使用“概念上的常量性” 当const和non-const成 ...

  10. 前端——实用UI组件库

    Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https://valor-software.com/ngx-bootstrap/#/ github: h ...