PHP自定义函数+系统函数库

全局变量

    $n = 5; //全局变量
    function fun1(){
        global $n;
        echo ‘我在函数体内也可以调用全局变量n,它的值是:‘ , $n;//5
        $n++;
    }
    fun1();
    echo ‘<hr>‘;
    echo $n;//6
    $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 ;//4
    }

    $n = 3;
    fun1($n);
    echo $n , ‘<hr>‘;//4

获得扩展名

    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;//0
    $str2 = ‘AB‘;//2
    $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);//10
    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);//8
    echo sqrt(4) ;//2

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);//7
    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() ;//1578625294
    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

原文地址:https://www.cnblogs.com/chenyingying0/p/12175262.html

时间: 2024-10-06 03:28:27

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

Linux之自定义的 Shell 函数和函数库

在 Linux 系统下,Shell 脚本可以在各种不同的情形下帮到我们,例如展示信息,甚至 自动执行特定的系统管理任务,创建简单的命令行工具等等. 在本指南中,我们将向 Linux 新手展示如何可靠地存储自定义的 shell 脚本,解释如何编写 shell 函数和函数库,以及如何在其它的脚本中使用函数库中的函数. Shell 脚本要存储在何处 为了在执行你自己的脚本时不必输入脚本所在位置的完整或绝对路径,脚本必须被存储在$PATH 环境变量所定义的路径里的其中一个. 使用下面的命令可以查看你系统

PHP100-第五讲 PHP5.4 的while / for / break / continue、PHP5.4 的系统函数和自定义函数

PHP5.4 的while / for / break / continue.PHP5.4 的系统函数和自定义函数 论坛交流:http://bbs.php100.com/read-htm-tid-150407.html PHP5.4 的while / for / break / continue 在PHP编写代码时,我们经常需要让相同的代码块运行很多次.这时候就可以在代码中使用循环语句来完成这个任务.PHP的循环结构类似C中模式,有while.do-while.for PHP5.4 的系统函数和

PHP5.4 循环结构、系统函数和自定义函数

1.while.for.break.continue <?php $i=1; while($i<=5){     echo "the number is".$i."<br>";     $i++; } ?> <?php $i=1; do {     echo "**********"."<br>";     $i++; }while($i<10);   ?> <

eCos系统无法正确链接到在C++源文件中自定义的cyg_user_start函数的问题和解决办法

在C++源文件中定义cyg_user_start函数前,将其声明成C函数,即可解决问题. eCos官网:http://ecos.sourceware.org eCos中文技术网:http://www.52ecos.net eCos交流QQ群:144940146. http://blog.csdn.net/zoomdy/article/details/39396085 mingdu.zheng<at>gmail<dot>com 问题: 在C++源文件中定义cyg_user_start

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

我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open().close().write().read()等,而标准C语言的库函数中也有一套对文件的操作函数fopen().fclose().fwrite().fread()等..那么同样是对文件的操作函数,标C与UC有什么区别呢?是标C效率高还是UC效率高呢?今天就让我们来一探究竟. 程序作用:将0~999999这1000000个整型数据写入文件. 1.标准C实现大量数据写入文件: /*文件名test1.c*

3、MySQL增删改查用户权授系统函数

<--目录--> 1)数据库分类 2)系统函数 3)创建数据库 4)选择数据库 5)建表语句 6)插入数据 7)删用户删数据删库表 8)修改表数据 9)查询数据 10)用户授权 11)show查看当前所有库表.建库表语句.用户权限 12)desc查看表结构 [数据库分类] 在MySQL软件中,数据库可以分为系统数据库和用户数据库两大类 1.系统数据库 系统数据库是指装完MySQL服务器后,会附带的一些数据,如下图所示 mysql> show databases; +-----------

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

下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构建一个空的php扩展,然后你向里面添加相应的代码就可以完成你自己的功能扩展了.下面我们就来介绍如何使用这个工具. 首先转移你的目录到php的目录下的ext目录,如果你只需要一个基本的扩展框架的话,执行下面的命令: ./ext_skel --extname=module_name module_nam

linux应用开发-系统函数方式文件编程

linux应用开发-系统函数方式文件编程 一 系统调用 指调用系统的函数库 二 文件描述符 性质:一个数字 打开的文件对应一个数字即一个文件描述符 三 常用函数 1 打开文件 open 2 创建文件 creat 3 关闭文件 close 4 读文件 read 5 写文件 write 6 定位文件 lseek 7 复制文件描述符 dup 三 man命令查找顺序 1 命令 man read 2 系统调用函数 man 2 read 3 库函数 四 linux下main函数参数 void main(in

转 Lua标准库: table函数, 数学函数, 字符串函数/格式化/配对, WoW新增函数, 函数别名

这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误