wordpress百度收录查阅,seo技术分类,淄博网络优化哪家专业,o2o系统软件文章目录 函数定义使用命名规则参数种类默认值引用传递函数返回值return关键字 作用域global关键字静态变量 可变函数匿名函数闭包常用系统函数输出函数时间函数数学函数与函数相关函数 函数
函数#xff1a;function#xff0c;是一种语法结构#xff0c;将实现某一个… 文章目录 函数定义使用命名规则参数种类默认值引用传递函数返回值return关键字 作用域global关键字静态变量 可变函数匿名函数闭包常用系统函数输出函数时间函数数学函数与函数相关函数 函数
函数function是一种语法结构将实现某一个功能的代码块多行代码封装到一个结构中从而实现代码的重复利用复用。
定义使用
function 函数名(参数){//函数体//返回值return 结果;
}定义函数的目的是为了实现代码的重复利用一个功能一个函数简单明了 函数的使用通过 函数名()的方式进行函数访问
注意
如果函数在定义的过程中有参数那么在调用的时候就必须传入对应的参数函数是一种结构不会自动运行必须通过调用才会执行函数是在代码执行阶段碰到函数名字的时候才会调用不是在编译阶段。函数的调用特点只要系统在内存中能够找到对应的函数就可以执行函数的调用可以在函数定义之前
display(20); //20hello Mangofunction display($val)
{echo $val;echo hello Mango;
}命名规则
命名规范由字母、数字和下划线组成但是不能以数字开头
函数作为一种常用的结构一般遵循以下规则函数通常名字代表着函数的功能而有些功能会比较复杂可能一个单词不足以表达需要多个组合。
1.驼峰法除了左边第一个单词外后面所有的单词首字母都大写showParentInfo()
2.下划线法单词之间通过下划线连接单词都是小写show_parent_info()
函数名字在一个脚本周期中不允许出现同名函数通常在一个系统开发中都不会使用同名函数 参数种类
函数的参数分为两种形参和实参
形参形式参数不具有实际意义的参数是在函数定义时使用的参数实参实际参数具有实际数据意义的参数是在函数调用时使用的参数
形参是实参的载体实参在调用时通常是需要传入到函数内部参与计算运算那么需要在函数内部去找到实际数据所在的位置才能找到数据本身需要实际调用的时候将数据以实参的形式传递给形参给形参赋值从而使得函数内部可以用到外部数据。 例子 注意
1.在PHP中允许实参多于形参个数函数内部不用而已
2.在PHP中理论上形参个数没有限制实际开发不会太多
3.实参不能少于形参个数 默认值
默认值指的是形参的默认值在函数定义的时候就给形参进行一个初始赋值如果实际调用传入的参数实参没有提供那么形参就会使用定义时的值来进入函数内部参与运算。
通常默认值是用在一些一定会有某个数据参与但是可能通常是某个我们知道的值。 注意事项 1.默认值的定义是放在最右边的多个不能左边形参有默认值但是右边没有 必须从右往左缺省而且要连续
2.函数外部定义的变量名字与函数定义的形参名字冲突同名是没有任何关联关系的如果多个函数使用同样的形参名字也不冲突。 引用传递
实参在调用时会将值赋值给形参那么实际上使用的方式就是一种简单的值传递将实参如果是变量或者常量或者其他表达式的结果值取出来赋值给形参形参与外部实际传入的参数本身没有任何关联关系只是结果一样。
如果希望在函数内部拿到的外部数据能够在函数内部改变那么就需要明确告知函数定义时函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值。
function 函数名(形参1,形参2){ //此时形参1是值传递 形参2是引用传递//函数体
}在调用的时候必须给引用传值的参数位置传入实际参数而且参数本身必须是变量。变量才有指向的数据的内存地址
$a 1;
$b 1;
function AddMyself($a,$b)
{$a;$b;
}
AddMyself($a,$b);
echo $a,br/,$b; // 1 2引用传值注意事项在传入实参的时候必须传入变量 函数返回值
返回值return指的是将函数实现的结果通过return关键字返回给函数外部函数调用处在PHP中所有的函数都有返回值。如果没有明确return使用那么系统默认返回NULL
function display()
{echo hello world;
}
var_dump(display()); //NULL函数的返回值可以是任意数据类型 return关键字
return在函数内部存在的价值返回当前函数的结果当前函数运行结束后续return的代码不会执行return还可以在文件中直接使用不在函数里面代表文件将结果return后面跟的内容转交给包含当前文件的位置。通常在系统配置文件中使用较多在文件中也代表中终止文件后面的代码return之后的内容不会执行
$res include_once func.hpp; //假设该文件return hello world
echo $res;//hello world作用域
作用域变量常量能够被访问的区域
1.变量可以在普通代码中定义
2.变量也可以在函数内部定义 在PHP中作用域严格来说分为两种但是PHP内部还定义一些在严格意义之外的一种所以总共算三种
1.全局变量就是用户普通定义的变量函数外部定义
所属全局空间在PHP中只允许在全局空间使用理论上函数内部不可访问脚本周期直到脚本运行结束最后一行代码执行完
$glo global area; function func()
{$inner __FUNCTION__;echo $glo;//err,函数内部不可访问外部全局变量
}2.局部变量就是在函数内部定义的变量
所属当前函数空间在PHP中只允许在当前函数自己内部使用函数周期函数执行结束函数是在栈区中开辟独立内存空间运行 3.超全局变量系统定义的变量预定义变量$_SERVER、$_POST等
所属超全局空间没有访问限制函数内外都可以访问
超全局变量会将全局变量自动纳入到$GLOBALS里面而$GLOBALS没有作用域限制所以能够帮助局部去访问全局变量但是必须使用数组方式
$glo global area; function func()
{echo $GLOBALS[glo];
}func(); //global area
echo hr/;
echo $glo; //global area如果想函数内部使用外部变量除了$GLOBALS之外通过参数传值如果要统一战线还可以使用引用传值。
global关键字
在PHP中其实还有一种方式能够实现全局访问局部同时局部也可以访问全局global关键字
global关键字是一种在函数里面定义变量的一种方式
1、 如果使用global定义的变量名在外部存在全局变量那么系统在函数内部定义的变量直接指向外部全局变量所指向的内存空间同一个变量
2、 如果使用global定义的变量名在外部不存在全局变量系统会自动在全局空间外部定义一个与局部变量同名的全局变量
本质的形式在函数的内部和外部对一个同名变量全局和局部使用同一块内存地址保存数据从而实现共同拥有。 语法规则 global 变量名;//不能赋值
$变量名 值;例子 $global global area;
function func()
{//外部存在同名的global变量//函数内部定义的变量直接指向外部全局变量所指向的内存空间global $global; echo $global;//定义全局不存在变量global $local;$local inner func;
}
func(); //global area
echo hr/;
echo $local;//访问局部变量 inner func以上方式可以实现局部与全局的互访但是通常不会这么用。一般如果会存在特殊使用也会使用参数的形式来访问。还可以使用常量define定义的常量
define(PI, 3.14);function func()
{echo PI;
}
func(); //3.14
echo PI;//3.14静态变量
静态变量static是在函数内部定义的变量使用static关键字修饰用来实现跨函数共享数据的变量函数运行结束所有局部变量都会清空如果重新运行一下函数所有的局部变量又会重新初始化而静态变量不会 语法 function 函数名(){//定义变量static $变量名 值; //通常会在定义的时候就直接赋值
}例子 function func()
{$local 0;static $count 0;$count;$local;echo $local, ,$count;
}
func(); echo hr/;//1 1
func(); echo hr/;//1 2
func(); echo hr/;//1 3静态变量的作用是为了跨函数共享数据同一个函数被多次调用 使用 1、 为了统计当前函数被调用的次数
2、 为了统筹函数多次调用得到的不同结果递归思想 可变函数
可变函数当前有一个变量所保存到值刚好是一个函数的名字那么就可以使用$变量()来充当函数名使用
该变量相当于是C语言当中的函数指针 语法 $变量名 函数名
function 函数名(函数参数){//...
}
$变量名(函数参数)使用例子 $func display;
function display()
{echo hell I am function display() ;
}
$func();//hell I am function display()可变函数在系统使用的过程中还是比较多的尤其是使用很多系统函数的时候需要用户在外部定义一个自定义函数但是是需要传入到系统函数内部使用 回调函数
//假设是系统函数 -求第二个参数的4次方
function sys_func($arg1,$arg2)
{return $arg1($arg2);//user_func($agr2)
}
function user_func($num)
{return pow($num,4);
}
echo sys_func(user_func,10);//求10^4 10000匿名函数
匿名函数没有名字的函数 基本语法 变量名 function(函数参数){//函数体
}使用一个变量保存匿名函数本质该变量是一个对象Closure 使用例子 $func function(){echo hello world;
};
$func();//hello world
var_dump($func);//object(Closure)#1 (0) { }闭包
简单来说函数内部有一些局部变量在函数执行之后没有被释放是因为在函数内部还有对应的函数在引用函数的内部函数匿名函数 证明函数内部的局部变量在函数使用完之后没有被释放 1、 使用内部匿名函数
2、 匿名函数使用外部局部变量use
3、 匿名函数被返回给外部使用
function func()
{$name HELLO WORLD;//定义匿名函数//use就是将外部局部变量保留给内部使用$innerFunction function() use($name){echo $name;}; //注意分号return $innerFunction;//返回内部匿名函数
}
$get func(); //$get $innerFunction
$get();//HELLO WORLD常用系统函数
输出函数
print()类似于echo输出提供的内容本质是一种结构不是函数但是有返回值始终返回1可以不需要使用括号
print_r()类似于var_dump但是比var_dump简单不会输出数据的类型只会输出值数组打印使用比较多
时间函数
date()按照指定格式对对应的时间戳从1970年格林威治时间开始计算的秒数如果没有指定特定的时间戳那么就是默认解释当前时间戳
time()获取当前时间对应的时间戳
microtime()获取微秒级别的时间
strtotime()按照规定格式的字符串转换成时间戳
echo time(),br/;
echo microtime(),br/;
echo strtotime(tomorrow 10 hours);数学函数
max()指定参数中最大的值
min()比较两个数中较小的值
rand()得到一个随机数指定区间的随机整数
mt_rand()与rand一样只是底层结构不一样效率比rand高建议使用
round()四舍五入
ceil()向上取整
floor()向下取整
pow()求指定数字的指定指数次结果pow(2,8) 2^8 256
abs()绝对值
sqrt()求平方根 与函数相关函数
function_exists()判断指定的函数名字是否在内存中存在帮助用户不去使用一个不存在的函数让代码安全性更高
func_get_arg()在自定义函数中去获取指定数值对应的参数
func_get_args()在自定义函数中获取所有的参数以数组形式返回
func_num_args()获取当前自定义函数的参数数量(个数)
function testFunc($a,$b)
{//获取指定参数 --获取第一个参数var_dump(func_get_arg(1));//获取所有参数var_dump(func_get_args());//获取参数数量var_dump(func_num_args());
}
echo pre;
//短路运算,该函数存在才调用
function_exists(testFunc) testFunc(1,2,3.14);输出
string(1) 2
array(3) {[0]int(1)[1]string(1) 2[2]float(3.14)
}
int(3)注意参数的标识是从0开始的func_get_args和func_num_args都是统计的对应实参的数量