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
猜你喜欢
- 许多 Microsoft 的编程语言,如 Visual Basic、VBScript 和 Jscript,都提供集合(collection)
- 问题:数据库实际大小为600MB, 日志文件实际大小为33MB, 但日志文件占用空间为2.8GB!试了多种方式,SHIRNK DATABAS
- write2vin 的 PPT原文路宛兮写的简介:本文解释了以下问题: 1.什么是用户体验? 2.谁发明了这个术语?他想表达什么意思? 3.
- 实验目的:验证主动释放内存变量是否有价值. 实验原始代码: <script language=vbscript runat=serve
- 简介在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SER
- 在大型的ASP项目中,很多的页面都涉及到分页、翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化
- 本文进通过实例,讲述通过 prototype 自定义方法的过程,旨在抛砖引玉,如果不对的地方,欢迎指正!prototype 是在 IE 4
- 一、介绍QQ空间相册的个性化利器,能对照片进行效果的优化、文字编辑等等。从设计上使用了创新的手法,尽量减少用户的思考。其中,通过界面的特殊表
- 在使用SQL Server 的过程,中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我
- 公布到网页上的Email经常会被一些工具自动提取,一些非法用户就会利用所提取的Email大肆发送垃圾邮件。这些工具大多都是查找链接中“mai
- 其实这个问题落伍谈了n次了其中care4也说了两次所以如果你有问题最好先搜索一下 说不定问题早有人解决了http://www.im286.c
- 由于在遭遇到这个页面之前我们一 * 互刚好在讨论交互设计原则之类的话题,其中有一条是:包容性,即满足主体用户需求的同时,尽可能兼顾非主体用户需
- 如何制作一个防止多次刷新计数的图片计数器?请问如何做一个专业的图片计数器? <%countlong
- 今天看YUI的视频教程,YUI的工程师介绍的一款在线的图片压缩工具,也许你用过,也许没有,不过我这里强烈推荐大家用一下,我用smush.it
- 年前在重写淘宝旺铺里的会员卡脚本的时候,无意中发现了一个有趣的事情。代码类似:var associative_array = new Arr
- 如何用Cookie进行登录验证?很简单,看看这两个文件:login.htm请注册登录随风起舞<FORM ACTION=&qu
- ASP使用xmlhttp获取远程网页内容,解决乱码问题方法一:<%function getHTTPPage(url)on error
- fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如果传入的字符串参数编码为
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可替换XML成
- alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter t