老雷PHP课堂
PHP最初是面向过程语言,有很多内置函数,比如处理字符串、处理数组的函数等。
除了内置函数,我们还需要了解如何自定义函数,函数一个可以实现功能复用的代买块。
函数是一组功能的集合,可以复用。
一、函数定义
function myFun($a,$b=2){ //echo "fun"; return $a*$b; } $c=myFun(1,2); echo $c;
二、函数的参数
普通变量
function fun($a){
}
默认值得变量
myFun($a,$b=2)
引用变量
function fun(&$a){
}
可变数量的参数列表
PHP 在用户自定义函数中支持可变数量的参数列表。在 PHP 5.6 及以上的版本中,由 ... 语法实现;在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get_arg(),和 func_get_args() 。
<?php function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } function sum() { $acc = 0; foreach (func_get_args() as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); ?>
三、返回值
return 可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。
返回值可以返回各类数类型
四、可变函数
PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。
<?php function foo() { echo "In foo()<br />\n"; } $func = 'foo'; $func(); ?>
五、匿名函数
匿名函数也叫闭包函数,允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。
<?php echo preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]); }, 'hello-world'); $greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); $message = 'world'; $example = function ($arg) use ($message) { var_dump($arg . ' ' . $message); }; $example("hello"); ?>
课后练习
1.实现一个函数,比较a,b,c的大小,按大小顺序返回三个数字。
2.实现一个函数,计算a+b*c-d,并计算结果谁大;
假设 a=1,b=6,c=3, d=22;
假设 a=3,b=2,c=3, d=42;
3.有a,b,c三个人玩骰子比大小,谁的点数大就谁赢,一样的平手。
他们玩了三次,a、b、c分别是
1,2,3
6,3,5
4,4,5
请写一个函数判断每次谁是赢家。
4.留言板页面 guest.php
1.首页 index或者其他非以下条件
2.添加页 add
3.保存页面 save
4.删除页面 delete
5.回复页面 reply
6.回复保存 reply_save
要求输入对应的参数输出对应的名称
如
guest.php?a=add 输出添加页
guest.php?a=save 输出保存页面
其他的不在以上的页面 则输出 首页
获取参数a的值
$a=isset($_GET["a"])?$_GET["a"]:"";
if($a=='add'){
}
使用 可变函数实现 留言板页面切换
$a="add"; $a(); if(function_exists($a)){ $a(); } function add(){ echo "add"; }