侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP自定义函数+系统函数库(代码示例)

php  /  管理员 发布于 7年前   261

全局变量

  $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&#039;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('\'', '&#39;', $str2);    echo $str2;//A&gt;B,B&lt;C,Tom&amp;John,He said:&quot;I&#039;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

更多相关php知识,请访问php教程!

以上就是PHP自定义函数+系统函数库(代码示例)的详细内容,更多请关注其它相关文章!


  • 上一条:
    php基础知识考察点之正则表达式
    下一条:
    PHP7.4新特性汇总
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客