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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
php生成唯一的订单函数分享
Feb 02 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
PHP微信红包API接口
Dec 05 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
php事件驱动化设计详解
Nov 10 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 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
php去除重复字的实现代码
2011/09/16 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
onpropertypchange
2006/07/01 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
酒店执行总经理岗位职责
2013/12/15 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
python基础之while循环语句的使用
2021/04/20 Python
React配置子路由的实现
2021/06/03 Javascript
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
golang使用map实现去除重复数组
2022/04/14 Golang