PHP函数用法详解【初始化、嵌套、内置函数等】


Posted in PHP onJune 02, 2020

本文实例讲述了PHP函数用法。分享给大家供大家参考,具体如下:

初始函数

  • 函数:封装一段用于完成特定功能的代码。

  • 通俗理解函数:可以完成魔鬼工作的代码块,就像积木一样,可以反复使用,在使用的时候,拿来即用。

  • 函数定义:1)内置函数(字符串操作函数、数组操作函数)2)自定义函数

函数的基本语法格式

function 函数名([参数1.参数2,......]){
		函数体......
	}
  • 函数的定义由一下四部分组成:
    • 关键字function
      function: 在声明函数时必须使用的关键字;
    • 函数名functionName
      函数名: 要符合PHP的标识符,且函数名是唯一的,不区分大小写
    • 参数
      [参数1,参数2…]: 在外界传递给函数的值,他是可选的,多个参数之间使用逗号“,”分隔。
    • 函数体
      函数体: 函数定义的主体,专门用于实现特定的代码段。
      返回值: 需要使用return关键字将需要返回的数据传递给调用者。

参数设置

对于函数来说,参数的不同设置,决定了其调用和使用方式

  • 无参函数

    PHP函数用法详解【初始化、嵌套、内置函数等】


  • 按值传递参数
    PHP函数用法详解【初始化、嵌套、内置函数等】
    PHP默认支持按值传递参数,按此种方式定义的函数,在函数内部可以睡衣对用户传递的参数进行操作。


  • 引用传参
    PHP函数用法详解【初始化、嵌套、内置函数等】 在开发中,若需要函数修改它的参数值,则需要通过函数的引用传递。实现方式只需要在参数中前添加“&”符号即可。


  • 设置参数默认值
    PHP函数用法详解【初始化、嵌套、内置函数等】
    函数参数在设置时,还可以为其指定默认值,也就是可选参数。当调用者未传递该参数时,函数将使用默认值进行操作。
    当使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。
  • 指定参数类型(弱)
    PHP函数用法详解【初始化、嵌套、内置函数等】
    在PHP 7.0及以上的版本后,在自定义函数时,可以指定参数具体时那种数据类型
    当用户调用函数时,如果传递参数不是int类型。程序传递的参数不是int类型,程序会将其强制的转换为int型后,在进行操作,这种方式称为弱类型参数设置。
  • 指定参数类型(强)
    PHP函数用法详解【初始化、嵌套、内置函数等】
    除此之外,还可以将其设置为强类型的参数,即当用户传递的类型不符合函数的定义,程序会报错提醒。

变量的作用域

变量在定义后,默认情况下,可以在函数中使用,函数外不可以。

  • 变量只有在其作用范围内才可以被使用,这个作用范围称为变量的作用域。
  • 在函数中定义的变量称为局部变量
  • 在函数外定义的变量称为全局变量
function test (){
		$sum = 36; //局部变量
		return $sum;
}
$sum = 0;	//全局变量
echo text();	//输出结果:36
echo $sum;	//输出结构:0

那么如何在函数中使用全局变量呢?
答:参数传递,global关键字和超全局变量$GLOBALS。

$snap = 'nihao';
function abc(){
 global $snap;//全局变量的关键词,通常加在变量前。引用全局变量
 return $GLOBALS['snap'];//引用外部变量。定义全局变量
}
echo abc();

函数的嵌套调用

嵌套调用

函数的嵌套调用: 指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其它函数的方式称为嵌套调用。

递归调用

递归调用: 是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数

函数的高级应用

1. 静态变量

轻松得到函数被访问的次数,一是在函数中使用全局变量记录,缺点是全局变量可随时子啊函数外被改变,不能准确的记录;二是在函数中使用静态变量。
PHP函数用法详解【初始化、嵌套、内置函数等】

变量的作用域

  • 局部变量: 在函数的内部定义的变量,其作用域是所在函数
  • 全局变量: 被定义在所有函数以外的变量,其作用域是整个PHP文件,但在用户自定义函数内部是不可用的。如果希望在用户自定义函数内部使用全局变量。则要使用global关键字声明
  • 静态变量: 能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值,而一般变量在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用static来声明变量,把关键字static放在要定义的变量之前。

2.可变函数

可变函数: 可变变量,他的实现是在一个变量前添加一个“¥符号”,就变成了另外一个变量。同理,可变函数的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它

3.回调函数

回调函数: 指的就是具有callable类型的函数,一般用作参数的传递。如PHP内置函数call_user_func()可以接受用户自定义的回调函数作为参数。

4. 匿名函数

匿名函数: 就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题

php的内置函数

$url = 'C:\web\apache2.4\htdocs\cat.jpg';
$pos = strrpos($url, '\\');
// 截取文件名称,输出结果:cat.jpg
echo substr($url, $pos + 1);
// 截取文件所在的路径,输出结果:C:\web\apache2.4\htdocs
echo substr($url, 0, $pos);

strrpos()函数用于在$url中获取“\”最后一次出现的位置$pos。
substr()函数的第1个参数表示待截取的字符串,第2个参数表示开始截取的位置,非负数表示从字符串指定位置处截取,从0开始;负数表示从字符串尾部开始。第3个参数表示截取的长度。
substr()函数的第3个参数表示截取的长度,该长度的设置具体有以下4种情况。
省略第3个参数时,将返回从指定位置到字符串结尾的子字符串。
第3个参数为正数,返回的字符串将从指定位置开始,最多包含指定长度的字符,这取决于待截取字符串的长度。
第3个参数为负数,返回的字符串中在结尾处将有个指定长度的字符被省略。
第3个参数为0、false或null,将返回一个空字符串。
  • 替换指定位数的字符
    替换指定位数的字符,在开发也是很常见的功能。例如,在各种抽奖环节中,为了保证用户的隐私,出现的手机号一般使用“*”将第4至7位的数字进行覆盖
$tel = '18810881888';		 // 随意输入一串数字作为手机号
$len = 4; 			// 需要覆盖的手机号长度
$replace = str_repeat('*', $len); 	// 根据指定长度设置覆盖的字符串
echo substr_replace($tel, $replace, 3, $len);	// 输出结果: 188****1888

str_repeat()函数用于对“*”字符重复lensubstrreplace() len次。substr_replace()函数用于对字符串" role="presentation" style="position: relative;">len次。substrr​eplace()函数用于对字符串tel中第3个位置开始后的len使 len长度的字符使用" role="presentation" style="position: relative;">len长度的字符使用replace进行替换。

echo ceil(5.2);	// 输出结果:6
echo floor(7.8);	// 输出结果:7 
echo rand(1, 20);	// 随机输出1到20间的整数

ceil()函数是对浮点数5.2进行向上取整,
floor()函数是对浮点数进行向下取整,
rand()函数的参数表示随机数的范围,第1个参数表示最小值,第2参数表示最大值。

echo time();			// 输出结果:1487666317
echo mktime(0, 0, 0, 2, 21, 2017);	// 输出结果:1487606400
echo strtotime('2017-2-21');	// 输出结果:1487606400
echo microtime();			// 输出结果:0.04142600 1487666098
echo microtime(true);		// 输出结果:1487666098.0414

time()函数用于获取当前时间的Unix时间戳,
mktime()和strtotime()函数可将给定的日期时间转换成Unix时间戳,前者的参数分别表示“时分秒月日年”,后者可以是任意时间的字符串。
函数microtime()用于获取当前Unix时间戳和微秒数,不设置参数时,返回值的形式前面一段数字表示微妙数,后面一段数字表示秒数;设置参数时,小数点前表示秒数,小数点后表示微秒数。

格式化时间戳: 对于用户来说,时间戳的直接输出,会让其看到一个毫无意义的整型数值。为了将时间戳表示的时间以友好的形式显示出来,可以对时间戳进行格式化。

echo date('Y-m-d H:i:s');		// 输出结果:2017-02-21 16:48:16
echo date('Y-m-d', 1487666317);	// 输出结果:2017-02-21

date()函数第1个参数表示格式化日期时间的样式
date()函数第2个参数表示待格式化的时间戳,省略时表示格式化当前时间戳。
PHP函数用法详解【初始化、嵌套、内置函数等】
PHP函数用法详解【初始化、嵌套、内置函数等】

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一些关于PHP的知识
Nov 17 PHP
加强版phplib的DB类
Mar 31 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
ThinkPHP路由详解
Jul 27 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 PHP
PHP与Web页面交互操作实例分析
Jun 02 #PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 #PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 #PHP
PHP实现本地图片转base64格式并上传
May 29 #PHP
You might like
php5 and xml示例
2006/11/22 PHP
php实例分享之二维数组排序
2014/05/15 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
Python计算一个文件里字数的方法
2015/06/15 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
python 实现屏幕录制示例
2019/12/23 Python
Python魔术方法专题
2020/06/19 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
剪彩仪式主持词
2014/03/19 职场文书
买房协议书
2014/04/11 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
支部鉴定材料
2014/06/02 职场文书
婚宴致辞
2015/07/28 职场文书
七年级数学教学反思
2016/02/17 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
python实现简单的井字棋
2021/05/26 Python
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python