全局变量

    $n = 5; //全局变量
function fun1(){
global $n;
echo '我在函数体内也可以调用全局变量n,它的值是:' , $n;//
$n++;
}
fun1();
echo '<hr>';
echo $n;//
    $n = 6;
function fun1(){
echo '变量的值是:' , $GLOBALS['n'];
$GLOBALS['n']++;
}
fun1();
echo $GLOBALS['n'];

不使用循环语句,来计算1~100的和

    function recursive($n){
if($n>=1){
return $n + recursive($n-1);
}
}
echo recursive(100);

引用

    $foo = 'Bob';
$bar = &$foo; //看待成变量的别名
$bar = 'Rose';
echo $foo;//Rose $foo = 'Mooc';
$bar = &$foo; //看待成变量的别名
unset($foo); //变量销毁
echo $bar;//Mooc

自定义函数

    function fun1(&$n){
$n++;
echo '我是函数体内的局部变量' , $n ;//
} $n = 3;
fun1($n);
echo $n , '<hr>';//

获得扩展名

    function getExtension($filename)
{
$pos = strrpos($filename, '.');
$extension = strtolower(substr($filename, $pos + 1));
return $extension;
} $path = 'mooc.func.pHP';
var_dump(getExtension($path));

求平均数

    function avg(...$args)
{
return $args;
}
var_dump(avg(1, 2, 3));

系统函数库

字符串转数组

    $str = 'A|B|C|D';
$arr = explode('|', $str);
print_r($arr);//[A,B,C,D]

数组转字符串

    $arr2 = array('Tom','John','Rose');
$str2 = implode(',',$arr2);
echo $str2;//Tom,John,Rose

获取扩展名:
方法一

    $filename = 'ab.cd.gif.JpEg'; //gepj.fig.dc.ba
$num = strrpos($filename, '.');
echo strtolower(substr($filename, $num+1)) , '<br/><br/>';//jpeg

方法二

    $filename = 'ab.cd.gif.JpEg'; //gepj.fig.dc.ba
$str2 = strrev($filename);//strrev反转字符串
$num = strpos($str2, '.');
echo strtolower(strrev(substr($str2, 0,$num)));//jpeg

trim移除字符串两侧的字符

    $str = "\n\n\t\tABC\t\t";
echo trim($str);//ABC

md5()加密

    $str = 'abc';
echo md5($str);//900150983cd24fb0d6963f7d28e17f72

格式化字符串

    $number = 5;
$str = 'shanghai';
$txt = sprintf('there are %d million cars in %s',$number,$str);
echo $txt;//there are 5 million cars in shanghai $number = 123;
$txt = sprintf("带有两位小数的结果是:%1\$.2f,\n不带小数的是:%1\$d",$number);
echo $txt;//带有两位小数的结果是:123.00,不带小数的是:123

htmlspecialchars特殊字符转为HTML实体

    $str = "A>B,B<C,Tom&John,He said:\"I'm OK\"";
echo htmlspecialchars($str,ENT_QUOTES);//A&gt;B,B&lt;C,Tom&amp;John,He said:&quot;I'm OK&quot;

通过str_replace进行转换

    $str1 = str_replace('&', '&amp;', $str); //必须是第一阶梯
$str2 = str_replace('>', '&gt;', $str1);
$str2 = str_replace('<', '&lt;', $str2);
$str2 = str_replace('"', '&quot;', $str2);
$str2 = str_replace('\'', ''', $str2);
echo $str2;//A&gt;B,B&lt;C,Tom&amp;John,He said:&quot;I'm OK&quot;

str_ireplace不区分大小写

    $str = 'javascript';
echo str_ireplace('A', 'b', $str);//jbvbscript

随机地打乱字符串中的所有字符

    $str = 'abcdefghijklmnopqrstuvwxyz';
$str = str_shuffle($str);
echo substr($str,0,4);//drif

strlen获得字符长度

    $str1 = NULL;//
$str2 = 'AB';//
$str3 = '中国';//6 一个中文3个字符
echo strlen($str1) , strlen($str2) , strlen($str3);

stripos不区分大小写,字符串从0开始编号,如果没有出现,则返回FALSE

    $str1 = 'javascript';
$str2 = 'A';
var_dump(stripos($str1, $str2)); //int(1)

搜索$str2在字符串中的位置,并返回从该位置到字符串结尾的所有字符

    $str1 = 'abcdcef';
$str2 = 'c';
echo strrchr($str1, $str2);//cef

获取扩展名

    $filename = 'a.bc.cd.png';
echo substr(strrchr($filename, '.'),1);//png

strtoupper转大写
strtolower转小写

    $str1 = 'html';
$str2 = 'PHP';
echo strtoupper($str1) , strtolower($str2);//HTMLphp

ucfirst句子首字母大写
ucwords单词首字母大写

    $str3 = 'this is a test';
echo ucfirst($str3) , ucwords($str3);

substr截取字符串
负数=字符串长度+该负数

    $str = 'javascript';
echo strlen($str);//
echo substr($str, 0,4) ;//java
echo substr($str, 4);//script
echo substr($str, -2);//pt -2=10-2=8
echo substr($str, -5,-2) , "\n";//cri -5,-2=5,8

将字符串转为Zend_Controller_Front

    $str = 'ZenD_CONTRollER_FronT';
//1.转换小写
$str1 = strtolower($str);
//2.将下划线替换成空格
$str2 = str_replace('_', ' ', $str1);
//3.通过ucwords进行首字母大写操作
$str3 = ucwords($str2);
//4.将空格替换成下划线
$str4 = str_replace(' ', '_', $str3);
echo $str4;//Zend_Controller_Front

floor() ceil()

    $x = 2.7;
$y = 3.01;
echo floor($x) , '<br/><br/>';//2 向下取整
echo ceil($y) , '<br/><br/>';//4 向上取整

假设记录数为X,每页显示Y条记录,求总页数z

    z = ceil(X/Y);

fmod()对浮点数取模

    echo fmod(7.8,3) , '<br/>';//1.8

对整数取模

    echo 7.8 % 3 ; //整数余数的操作//1

格式化数字

    $x = 7896.827;
echo number_format($x) , '<br/><br/>';//7,897
echo number_format($x,2) , '<br/><br/>';//7,896.83

pow()幂操作 sqrt()平方根操作

    echo pow(2,3);//
echo sqrt(4) ;//

mt_rand()是更好的随机数生成器,因为它跟rand()相比播下了一个更好地随机数种子;而且性能上比rand()快4倍

    echo rand(50,80);
echo mt_rand(10,99);

生成四位数随机验证码

    $chars = 'abcdefghijlmnopqrstuvwxyz789654321';
$len = strlen($chars);
for($i=0;$i<4;$i++){
$char .= substr($chars,mt_rand(0,$len-1),1);
}
echo $char;

round()四舍五入

    $x = 7.238;
echo round($x);//
echo round($x,2);//7.24

strtotime字符串转时间

    echo '当前日期:'  , date('Y-m-d') , "\n";//2020-01-10
echo '下个月的日期:' , date('Y-m-d', strtotime('1 month')) , "\n";//2020-02-10
echo '上个月最后一天:' , date('Y-m-d H:i:s',strtotime('last day of -1 month')) , "\n";//2019-12-31 10:39:12
echo '上个月最后一天零点:' , date('Y-m-d H:i:s', strtotime("midnight last day of -1 month")) , "\n"; //2019-12-31 00:00:00
echo '昨天零点:' , date('Y-m-d H:i:s',strtotime('yesterday')) , "\n";//2020-01-09 00:00:00
echo '现在:' , date('Y-m-d H:i:s',strtotime('now')) , "\n";//2020-01-10 10:39:12
echo '三个星期之间的时间戳是:' , strtotime('-3 weeks');//三个星期之间的时间戳是:1576810790
echo (time() - strtotime('-3 weeks'))/86400 ;//21 间隔时间
echo '上个月:'.date('Y-m-d H:i:s',strtotime('-1 month')) ; //上个月:2019-12-10 10:59:50
echo '上个月的第一天:'.date('Y-m-d H:i:s',strtotime('first day of -1 month'));//上个月的第一天:2019-12-01 10:59:50

返回当前本地的日期/时间的日期/时间信息

    print_r(getdate());
//Array
//(
// [seconds] => 3
// [minutes] => 42
// [hours] => 10
// [mday] => 10
// [wday] => 5
// [mon] => 1
// [year] => 2020
// [yday] => 9
// [weekday] => Friday
//[month] => January
//[0] => 1578624123
//)

microtime()返回当前 Unix 时间戳的微秒数

    echo microtime();//0.41369400 1578624195

当设置为 TRUE 时,规定函数应该返回一个浮点数,否则返回一个字符串;默认为 FALSE

    echo microtime(true);//1578624195.4137

计算程序运行时间

    $start = microtime(true);
$sum = 0;
for ($i=0; $i <1000000 ; $i++) {
$sum += $i;
}
$end = microtime(true);
echo '共花费' , round($end - $start,3) , '秒';//共花费0.016秒

time()

    echo time() ;//
echo '当前的日期时间是:' , date('Y-m-d H:i:s') ;//当前的日期时间是:2020-01-10 11:01:34
echo '昨天的日期时间是:' , date('Y-m-d H:i:s',time()-86400) ; //24*60*60 //昨天的日期时间是:2020-01-09 11:01:34

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID

    echo uniqid();//5e17e94f8a19b
echo uniqid('abc');//abc5e17e96c1771e
echo uniqid(microtime());//0.09603300 15786253885e17e96c17727
echo uniqid(microtime() . mt_rand()); //mt_rand(100,999);//0.09604200 15786253884744704985e17e96c1772f //uuid 8-4-4-4-12 = 32
echo md5(uniqid(microtime() . mt_rand()));//cf6333288fcb04f60fbbedafd127201e

session

    session_start();
echo session_id();//bp99jhu204h6vi214ttgcjce80

PHP自定义函数+系统函数库的更多相关文章

  1. PHP学习之[第05讲]PHP5.4 循环结构、系统函数和自定义函数

    一.while/for/break/continue: while (expr){ statements } for (expr1:expr2:expr3){ statement } break n  ...

  2. 标准c库函数与Linux下系统函数库 区别 (即带不带缓冲区的学习)

    我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open().close().write().read()等,而标准C语言的库函数中也有一套对文件的操作函数fop ...

  3. sql server 系统常用函数:聚合函数 数学函数 字符串函数 日期和时间函数和自定义函数

    一.系统函数 1.聚合函数 聚合函数常用于GROUP BY子句,在SQL Server 2008提供的所有聚合函数中,除了COUNT函数以外,聚合函数都会忽略空值AVG.COUNT.COUNT_BIG ...

  4. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  5. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

  6. 描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串

    下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构 ...

  7. .Net程序员学用Oracle系列(10):系统函数(下)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...

  8. .Net程序员学用Oracle系列(10):系统函数(中)

    1.四大转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.两大近似值函数 2.1.ROUND 2.2.TRUNC 3.正则函数 3.1.正则函 ...

  9. php开发之系统函数

    一些常用的php开发之系统函数的使用,可以使我们的开发效率,事倍功半 1) BC高精度函数库 2)

随机推荐

  1. Shell脚本 一键重启

    有个程序必须用 kill -9 pid号   关闭后,才能重新启动,每次都要手动查找pid号,麻烦容易出错,写个shell脚本 就三行很方便,自动查找pid号-关闭程序-重启程序 #!/bin/bas ...

  2. Mysql 初始化 及 密码管理

    安装好mysql后,第一次初始化数据库 前言:启动mysql数据库最好不要使用root用户,而是使用mysql用户启动 官方解释: (永远不要使用root帐号启动MySQL Server.这样做很危险 ...

  3. light oj 1067 费马小定理求逆元

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1067 1067 - Combinations Given n differen ...

  4. REDTEAM 指南---第四章 外部侦察

    第四章 外部侦察 贡献者:Haythem Arfaoui 翻译BugMan 主动侦察 介绍 主动足迹涉及使用可以帮助您收集更多信息的工具和技术 有关目标的信息.与被动足迹不同的是,过程永远不会“触及” ...

  5. iOS开发基础--C语言简述(一)

    先占个坑,回来再补 需要的运行环境,自行搜寻,工具不止一种,不详细叙述. C语言是一门非常重要的编程语言,与硬件底层直接相关,很多语言到最后的接口封装都会选择C语言,因而C语言一直很受欢迎,也务必掌握 ...

  6. oracle-11g-R2监听文件配置

    客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-, TNS:listener ...

  7. codewars--js--Human Readable Time—Math对象,parseInt()

    问题描述: Write a function, which takes a non-negative integer (seconds) as input and returns the time i ...

  8. 【POJ - 3186】Treats for the Cows (区间dp)

    Treats for the Cows 先搬中文 Descriptions: 给你n个数字v(1),v(2),...,v(n-1),v(n),每次你可以取出最左端的数字或者取出最右端的数字,一共取n次 ...

  9. 什么是kafka,怎么使用? (3)

    上次我因为在windows上解压一个.gz的包没有解压出来,故需要在linux使用kafka,而且这kafka的快速开始上有个zookeeper的文件配置 所以我感觉有必要把dubbo-zookeep ...

  10. LeetCode刷题专题

    1. https://leetcode-cn.com/problems/container-with-most-water/ 思想:左右边界  i,j   向中间收敛 ,左右夹逼 方法一: 一维数组的 ...