php函数(一)
来源:互联网 发布:mac如何编辑程序 编辑:程序博客网 时间:2024/06/05 17:34
(一)基本使用
函数定义形式
function 函数名(形参1,形参2,……){
函数体
}
函数调用形式
1.没有返回值的函数,调用语句是独立语句
函数名(实参1,实参2,…);
2.有返回值的函数,将调用语句当作一个“数据”使用
$v1=函数名(实参1,实参2,…);
$v1=函数名(实参1,实参2,…)*3+6;//参与运算
echo 函数名(实参1,实参2,…);//直接输出
echo 函数名(实参1,实参2,…)*3+6;
$v1=函数名(函数名(),实参1,实参2,…);//可当实参使用
函数调用流程分析
开始调用:实参传数据给形参
程序执行流程进入到函数中(一个独立的运行空间),跟全局执行空间是隔离的
按常规逻辑执行函数中的代码
如果碰到return语句,则终止函数的执行,调回函数开始调用的位置
如果执行到函数最后位置,也同样跳会函数开始调用的位置
(二)函数参数
函数定义时:形参
只在该函数中有效的变量名,函数结束,通常这些变量会销毁
调用时:实参
可以是一个实际数据(5,abc),也可以是一个变量,其作用是将数据赋值给形参
实参与形参一一对应
参数的默认值
定义一个函数时,在形参的位置,可以给形式参数设定默认值
默认值不能是对象或资源类型,只能是常量表达式,或常量,不能是变量。
调用函数时,如果给有默认值的形参传值,则使用传来的数据,不给传数据,则使用默认值
示例:functiongetArea($v,$pi=3.14){ 函数体}
函数的参数传值问题
值传递,引用传递(在形参前加&,实参形式不变)
引用传递时,实参只能是一个变量,引用传值的形参变量,在函数内部改变该形参变量的值,则对应实参变量的值也就改变
函数的数量问题
实参与形参一一对应,如果形参有默认值,实参可以省略
特殊情况:自由参数数量
定义时不给定形参,但调用时,又可以给定任何个数的实参
类似于var_dump()可以传递不定个数的参数:
var_dump($v1);
var_dump($v1,$v2);
这种应用的实现,依赖于系统中的3个系统函数:
func_get_args();//获得一个函数所接收到的所有实参数据,结果是一个数组
func_get_arg(n);//获得一个函数所接收到的第n个实参数据(n从0开始)
func_num_args();//获得一个函数所接收到的所有实参数据的个数
示例:
function getSum()
{
$arr=func_get_args();
$sum=0;
foreach($arr as$value){
$sum+=$value;
}
return $sum;
}
$he1=getSum(1,2);
$he2=getSum(1,2,3);
(三)函数的返回值
使用return语句,其后带一个数据(直接数据、变量数据、表达式结果数据),再返回到该数据的“调用位置”。
通常情况下,函数返回的数据都是以“值传递”的形式,还可以使用引用返回(&)的形式来定义一个函数的返回值形式。形式如下:
function &函数名(形参1,形参2,……)//注意函数名前有个引用符号“&”
{
static $result=0; //初始化(定义为静态变量后,不会随着函数结束而销毁,会持有该值,而且第二次及以后再调用该函数,也不会初始化了)
……
return $result;//返回数据,只能是变量
}
调用函数:$v1=&函数名(实参1,实参2,……)//引用返回的函数,有返回值(即v1与result指向同一个数据)
(四)函数的其他形式
可变函数
可变函数,即函数名“可变”,与可变变量原理相同
$str1=”f1”; //只是一个字符串,内容为“f1”
$v1=$str1(3,4);//形式上看起来是一个变量后面加一个括号,本质是该变量的内容(f1)后面加括号,即这里是调用函数f1(3,4);
实际应用中,需要根据“用户给定”的数据,来决定调用哪一个函数,比如:
function jpg(){处理jpg图}
function png(){处理png图}
function gif(){处理gif图}
$fileName=get filename(){获取用户上传的图片名}
$houzhui=get_houzhui($fileName);
$houzhui();
匿名函数
匿名函数就是没有名字的函数,有两种形式:
表现1:
$f1=function(){…函数体;}//这里的匿名函数定义形式上没有名字,但其实将其赋值给变量$f1
使用时,与“可变函数”一样:$v1=$f1( );
表现形式2:
调用其他函数(匿名函数,实参1,实参2,。。。)
说明:
此形式的匿名函数只有定义的函数体(无函数名),只能作为其他函数调用时的参数,会在调用其他函数的“过程中”被执行。
能够使用(匿名)函数当作实参的函数,并不多!
其中一个常见的是:call_user_func_array();
其形式为:
call_user_func_array(匿名函数,数组);
含义:将数组的每一项当作匿名函数的实参,传递到该匿名函数中,并执行该匿名函数,可以从匿名函数中返回数据。
示例1:
call_user_func_array(function($m1,$m2){
echo “m1=$m1,m2=$m2”;
},array(1,2));
示例2:
$a1=array(1,2,3);
$func1=function(){
$a=func_get_args();
$sum=0;
foreach($a as $value){
$sum+=$value
}
return $sum;
}
$s= call_user_func_array($func1,$a1);
- php函数(一)
- php杂项函数(一)
- php函数file_get_contents(一)
- php函数file_get_contents(一)
- PHP函数(一) 字符串函数
- 我的PHP函数(一)
- php 常用函数收藏(一)
- php常用函数之数组(一)
- PHP之FUNCTION函数(一)
- PHP中MySQL一些函数(一)
- PHP中字符串函数整理(一)
- PHP函数(一)
- php 常用函数(一)
- PHP函数(一)
- php常用函数之字符串函数(一)
- php中文函数连载一
- PHP的常用函数(一)
- php 函数小技巧(一)
- [JZOJ3806] 小X的道路修建
- MyEclipse10中配置开发Python
- jdcloud-m(筋斗云) 变脸式单网页应用框架
- java中Collections.sort() 排序函数的用法
- C++按map的value进行排序
- php函数(一)
- 凸优化:python解决凸优化问题
- yum配置/网卡配置/防火墙配置/jdk配置/开启apache
- 程序实训—学生成绩处理
- Docker实践(四):配置Docker Hub 加速器(DaoCloud、阿里云)
- 使用Studio工具遇到的一些异常
- 小博老师解析Java核心技术 ——JSwing窗体状态监听事件
- kelnel panic - not syncing:attempted to kill init
- ARM Linux启动详解(1)–系统上电到执行到linux kenel