文章目录
函数结构
function fun() //fun是函数名,不区分大小写,将重复的功能写在一起
{
//函数体
}
fun(); //函数调用
// 举例
function nine()
{
$i = 1;
echo "<table width='200' border='0'>";
do{
echo "<tr>";
$j =1;
do{
echo "<th>{$j}x{$i}=".($i*$j)."</th>";
$j++;
}while($j<=$i);
echo "</tr>";
$i++;
}while ($i<=9);
echo "</table>";
}
nine();
nine(); // 可以重复调用
function,函数特点
- 定义函数在调用之前。定义的代码会释放到内存
- 函数定义了之后,不调用就不会执行
- 不区分大小写
- 函数命名与变量命名规则一致
函数参数
-
形式参数:参数列表
-
实际参数:实参多于形参,只会传递与形参相对应的值,实参少于形参就会报错,如果没有实参,默认形参值执行
function sum($a,$b) //形参 { $sum = $a + $b; return $sum; // 返回参数执行操作后的值,最终输出int(7) 10 //echo $sum; // 打印,最终输出7NULL73 } var_dump(sum(2,5)); // 实参 // 实参多于形参时,只会传递与形参相对应的值,实参少于形参就会报错,如果没有实参,默认形参值执行 echo sum(sum(2,5),3); //用return时该类型为int,用echo时该类型为null
变量的作用域(链接php3_1.php)
全局变量 & 局部变量
$a = 1; // 全局变量,可以被php文件整体使用
function hh()
{
$a = 3; // 局部变量,函数内部的变量,不可以被其他函数引用
return $a;
}
hh();
echo $a;
调用全局变量
-
方法一:
$num = 100; function ll() { global $num; // 引用全局,临时存储空间 $num += 10; // 可以对原值进行操作 return $num; // 将临时的值覆盖原值 } ll(); // 输出:110 ll(); // 输出:120 echo $num;
-
方法二
$num = 100; function yy() { // $x = $GLOBALS["num"]; // $x += 5; // return $x; // 将num值引入x,x的值加5并返回,并没有覆盖全局变量的值最终得到值为105 $GLOBALS["num"] += 6; // 不需要返回值,调用函数后直接输出$sum } yy(); echo yy(); // 输出112, echo $num; // 将num引入x,x加5并返回,但是num的值没变,依然100
-
方法三
$num_1=56; $c=function () use($num_1) // 匿名函数 { $num_1 +=2; echo $num_1; //58,调用了全局变量,但是没改变 }; $c(); echo $num_1; //56
-
方法四
function uu(&$a) { // 传参时加&符号就是引用全局 $a++; } $v=4; uu($v); echo $v; // 5
静态变量
function ii()
{
static $a = 5;
$a++;
echo $a;
}
ii(); // 输出值为6 7,初始化赋值一次,重复调用时会保存上一次值,但是局部变量重复调用时每次都会初始化(有问题,也会保存上一次值啊)
ii();
函数调用顺序
function dd()
{
echo "1";
ff();
echo "2";
}
function ff()
{
echo "a";
gg();
echo "b";
}
function gg()
{
echo "A";
echo "B";
}
dd(); //输出1aABb2
函数
变量函数
function jj()
{
echo "pp";
}
$c= 'jj';
$c(); // 变量输出的jj作为调用的函数名,调用jj后输出pp
匿名函数,第三种特殊类型
$a =function ()
{
echo "我是匿名的";
}; //注意分号
$a();
回调函数:把另一个函数当参数传递
function func()
{
echo "我被调用了";
}
function fun_1($x)
{
$x(); //调用变量,匿名的
}
fun_1('func'); // 先调用func,在作为参数传入fun_1,输参数
递归函数(回调函数):函数内部可以调用其他函数,可以自己调用自己
function fu($t)
{
echo $t;
if ($t>1) {
fu($t-1); //调用具体参数
}
echo $t;
}
$t=5;
fu($t);
自定义函数
- include:只要执行出错,
- require:只要执行出错,就会终止当前程序
,可以自己调用自己
function fu($t)
{
echo $t;
if ($t>1) {
fu($t-1); //调用具体参数
}
echo $t;
}
$t=5;
fu($t);
自定义函数
- include:只要执行出错,
- require:只要执行出错,就会终止当前程序