PHP函数原理理解详谈
作者:不要叫我阿哥 发布时间:2023-06-04 01:56:59
函数初解
function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中实现代码的重复利用
函数定义语法:
关键点:function关键字,函数名,参数(形参和实参),函数体和返回值
基本语法:
function 函数名(参数){
//函数体
//返回值:return结果
}
定义函数的目的:实现代码的重复利用(简单明了)
函数的使用:通过访问函数的名字+();//如果函数在定义的过程中有参数,那么在调用的时候必须传入对应的参数
实例:
<?php
function display(){//定义
echo'hello world';
}
display();//调用
?>
函数是在代码执行阶段碰到函数名字的时候才会调用,不是在编译阶段
函数的调用特点:只要系统在内存中能够找到就可以执行,也就是函数的调用可以在函数的定义之前
<?php
display();//调用
function display(){//定义
echo'hello world';
}
?>
也就是这样
注意:函数也不可同名
参数详解
函数的参数分为两种:形参和实参
形参是实参的载体:实参在调用时需要传入函数内部参与计算,那么需要在函数内部去找到实际数据所在的位置才能找到数据本身;需要实际调用的时候,将数据以实参的形式传递给形参;给形参赋值,从而使得函数内部可以用到外部数据
<?php
function add($arg1,$arg2){//芝士形参,使用逗号分隔开
echo $arg1+$arg2;
}
echo '<hr/>';
$arg1=10;$arg2=20;
add($arg1,$arg2);//芝士传入的实参,可以是变量或者其他有值的表达式
?>
也就是调用时传给函数的值是实参,函数会把实参赋值给形参,然后形参在函数中运行
函数外部定义的变量名字与函数定义的=形参名字冲突(重名)是没有任何关系的,也就是同名形参在不同函数可以重复使用
引用传递
有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。
基本定义语法:
Function 函数名(形参1,$形参2){
//函数体
}
在调用的时候,必须给引用传值的参数位置传入实际参数苏,而且参数本身必须是变量。(变量才有指向的数值的内存地址)
<?php
function display($a,&$b){
$a=$a*$a;
$b=$b*$b;
echo $a,'<br>',$b,'<br/>';
}
$a=10;$b=5;
display($a,$b);
echo'<hr/>',$a,'<br/>',$b;
?>
由于$,所以函数在定义的时候,对应的b形参采用的是取地址,所以在实参传入之后,系统b取到了外部变量b的内存地址,a只去到了值,所以a只改变了函数内部自己,而b改变自己的同时也改变了外部
引用传值注意事项:在传入实参的时候,必须传入变量
函数体:函数内部(大括号{}里面)的所有代码都称之为函数体 函数返回值:
返回值:return,指的是将函数实现的结果,通过return关键字返回给函数外部(函数调用处);在php中所有的函数都有返回值(如果没有明确return使用,则系统默认返回null)
注意:函数的返回值可以是任意数据类型
return会直接结束函数,在return后的无法执行(函数内)
return还可以在文件中直接使用(不在函数里面);代表文件将结果return
后面跟的内容,转交给包含当前文件的位置.(通产在系统配置文件中使用较多)
在文件中也代表着终止文件后面的代码
静态变量
关键字:static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量,函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化
基本语法:
function 函数名(){
//定义变量
static $变量名=值 //通常会在定义的时候就直接赋值
}
<?php
function display(){
$local =1;
static $count =1;
echo $local++,$count++,'<br/>';
}
display();//11
display();//12
display();//13
?>
函数在调用的时候,会自动跳过static关键字这一行,也就是静态变量在使用后不会被释放
来源:https://blog.csdn.net/m0_73770225/article/details/127926890


猜你喜欢
- 一、先描述一下问题吧如下创建表时候报错了CREATE TABLE `xxx` ( `id` bigint(20) NOT NUL
- 前言在Django应用程序中发送电子邮件最常见的用例是密码重置、帐户激活和发送与您的应用程序相关的一般通知。下面来看看详细的介绍吧。配置Dj
- 前言大家应该都有所体会,在不同的项目可能会使用不同的Django版本,兼任性是大问题,如果不幸要去接手不同版本的项目,比较惨烈!如果想重装一
- 继承是面向对象编程的一个重要的方式,通过继承,子类就可以扩展父类的功能。在python中一个类能继承自不止一个父类,这叫做python的多重
- 前言验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。识别验证码的python 库有很多,用
- 本文实例讲述了php实现的CSS更新类及其用法,非常实用。分享给大家供大家参考。具体如下:CSSUpdate.class.php类文件如下:
- 问题描述MySQL 启动成功,使用 ps -ef |grep mysql 可以看到进程,如下图:也可以在服务器登陆,如下图:但是使用 net
- 问题今天在写项目功能的时候,有一个统计金额的情况,然后需要进行单位转换,所以写下了大概如下功能的语句,但得到的数据为小数点后4位精度,正常我
- 这篇博客主要写flatten()作用,及其参数的含义flatten()是对多维数据的降维函数。flatten(),默认缺省参数为0,也就是说
- 0、首先查看当前是否开启慢查询:(1)快速办法,运行sql语句show VARIABLES like "%slow%"
- MySQL启用SSD存储的实例详解有时OS读写慢会降低MySQL服务器的性能,尤其是OS与MySQL使用同一磁盘时。故最好是让MySQL使用
- 方式一在Python的SQLAlchemy ORM中,您可以使用以下代码动态地更改数据模型类的表名:from sqlalchemy.ext.
- 声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。通过傅里叶变换,可以将时间域的声音函数分解
- 1.业务需求背景业务提供一张底层图片1以及需要在底层图片上添加的图片2,两张图片大小不一致,将小图2添加到底图1中,并在其他的空白部分添加个
- 本文实例讲述了PHP实现的XXTEA加密解密算法。分享给大家供大家参考,具体如下:<?php/** * Xxtea 加密实现类 */c
- 1.作用域在python中,作用域分为两种:全局作用域和局部作用域。全局作用域是定义在文件级别的变量,函数名。而局部作用域,则是定义函数内部
- python等待10秒执行下一命令的方法:首先导入时间(time)模块;然后在需要等待执行的命令前调用sleep()方法,并在方法的括号里将
- 因为他的简单实用和数量庞大的插件,所以我们喜欢和使用jQuery,在jQuery数量庞大的插件中有很大的一部分是关于图片的,所以今天我们就整
- python的random库,提供了很多随机抽样方法。1. 设置随机数种子 seed()在适当的情形下,为例保证抽样的结果固定,不因多次运行
- 概述concurrent.futures 是 3.2 中引入的新模块,它为异步执行可调用对象提供了高层接口。可以使用 ThreadPoolE