php之函数
来源:互联网 发布:斯蒂芬库里 知乎 编辑:程序博客网 时间:2024/06/05 09:16
1.函数默认值
可以在函数定义形参的时候给定一个默认值:
PS:设置默认值的形参都往右边放。
function fun($a, $b = 8, $c = "tom"){ echo "<br>"," a = $a"," b = $b "," c = $c";}fun(3,9);//输出 a = 3 b = 9 c = tom
2.函数形参传值
echo "<hr>实参和形参通过值传递赋值:";$x = 3;$y = 6;function f6($a,$b){ $a++; $b++; echo "<br>f6函数内:"."a = $a , b = $b";//f6函数内:a = 4 , b = 7}f6($x,$y);//$x,$y都是实参,调用函数f6的时候将通过值传递给形参$a,$b赋值f6(3,6);//3和6是实参echo "<br>全局区:x = $x , y = $y ";//全局区:x = 3 , y = 6 echo "<hr>实参和形参通引用传递赋值:";$x = 3;$y = 6;function f7($a,&$b){ $a++; $b++; echo "<br>f7函数内:"."a = $a , b = $b";//f7函数内:a = 4 , b = 7}f7($x,$y);//$x,$y都是实参,调用函数f7的时候将通过值传递给形参$a,$b赋值//f7(3,6);这样错误 Fatal error: Only variables can be passed by referenceecho "<br>全局区:x = $x , y = $y ";//全局区:x = 3 , y = 7
3.函数参数数量
- 我在在调用函数的时候,一般实参和形参保持一致性;
- 带有默认值的函数,在调用的时候,实参可以从右往左省略;
- 定义函数的时候不带形参,但在调用函数的时候可以使用任意多个实参,代码如下:
function myfun(){ echo "myfun被调用<br>"; $argnum = func_num_args(); echo "实参参数个数:$argnum<br>"; //获取指定下标的实参数据 $fourthArg = func_get_arg(3);//获取第四个参数值 echo "第四个参数值:$fourthArg <br>"; //获取函数的实参数据数组 $argarr = func_get_args(); foreach($argarr as $val) echo $val.",";}myfun(1,2,3,"abc",true,7,8);
4.可变函数
可变变量:一个变量的名字还是一个变量,
$abc ="hello";$hello= 99;echo $$abc;//输出99
可变函数:一个函数的名字是一个变量的值。
function myfun1(){ echo "myfun1被调用";}$ff = "myfun1";$ff();//这里就是调用myfun1();
5.匿名函数
//①匿名函数成形式一--------------------$f1 = function (){ echo "不带参数的匿名函数<br>";};//这里分号不能少,相当于赋值语句$f1();//调用不带参数的匿名函数$f2 = function ($x,$y){ echo "带参数的匿名函数x=$x , y = $y <br>";};$f2(3,6);//调用带参数的匿名函数//②匿名函数成形式二--------------------function f3($x,$y,$z){ $x = $x * $x; $y = $y * $y; $z($x,$y);//$z 形参接收了匿名函数,在f3函数内调用这个匿名函数}//将匿名函数作为实参来使用f3(3,4,function($a,$b){ $c = $a + $b; echo "平方和:$c <br>";});
7.判断函数是否存在
if(function_exists('f3')) echo 'f3函数存在 <br>';if(!function_exists('f4')){ //如果函数f4不存在,则创建该函数 function f4() { echo "已创建函数f4 <br>"; } f4();//调用f4函数}
8.函数内外变量作用域
- 在函数内部无法直接使用全局区的变量:
<?phpheader("content-type:text/html;charset=utf-8");//定义一个全局区变量$a$a = 123;function fun(){ //在函数内使用全局区的变量$a--报错 echo $a; //Notice: Undefined variable: a in C:\Apache24\htdocs\2zuoyongyu.php on line 11}fun();
- 在全局区无法访问函数的局部变量:
function f1(){ $v = 11;}f1();//Notice: Undefined variable: v echo "<br>在全局区访问函数的局部变量 v = $v ";
- 局部变量在函数执行完后就销毁了,但是静态局部变量不会
function ff(){ static $num = 0;//静态局部变量初始化,初始化只执行一次,之后它的值会被保留 $num++; echo "<br>函数ff被调用 $num 次";}ff();ff();ff();
4. 那么在函数内如何访问全局区变量呢? 有2种方式:
①通过关键字global
//定义一个全局区变量$a$a = 123;function fun(){ global $a; //声明一个局部变量$a,跟全局区的$a同名且引用同一数据 echo "<br>函数内 a = $a"; $a = 222;//修改$a值 echo "<br>函数内修改后a = $a";}fun();echo "<br>全局区a = $a";
②使用预定义变量 $GLOBALS 访问
function fun(){ //使用预定义变量 $GLOBALS 访问 $a echo "<br>函数内 a = ".$GLOBALS['a']; $GLOBALS['a'] = 222;//修改$a值 echo "<br>函数内修改后a = ".$GLOBALS['a']; //下面代码将销毁$a变量,全局区将无法访问 //unset($GLOBALS['a']);}fun();echo "<br>全局区a = $a";
0 0
- PHP 之 函数 sprintf()
- PHP函数之setcookie()
- php之date()函数
- php之rand()函数
- php之chmod()函数
- php编程之函数
- PHP之六,函数
- php之数组函数
- PHP之htmlspecialchars函数
- PHP之日期函数
- php之mysql函数
- php之字符串函数
- PHP之SPL函数
- php学习之函数
- PHP之函数
- php之函数
- PHP之正则函数
- PHP函数之array_key_exists
- js计算器
- visudo 配置
- BZOJ 3931 CQOI 2015 网络吞吐量 最大流 最短路
- 安卓动态调试方法总结
- 堆
- php之函数
- Array.from()
- 三种纯css方法实现等高列
- js表单验证
- 2016年4月6日工作总结
- android studio 创建安卓项目时 报R文件找不到错误 可能源于布局xml文件包含错误
- 25.异常处理
- 常用运行命令win10
- 软引用SoftReference的使用