PHP笔记 17 18 19 20 21



自定义函数

1
2
3
4
5
6
7
<?php
function text()
{
echo '你好!';
}
text();
注意:function后跟自定义函数。

末尾的text():为函数的调用,与前面的保持一致,同时text():放在自定义函数前,也能实现。

函数的调用需要遵守定义函数的时候写的规则,一一对应,将具体的实际参数传给定义函数时候写的形式参数;
调用函数之后执行的过程是相对独立的,互不干扰的,默认没有联系。

在这里插入图片描述

参数

形式参数由零个,一个或多个变量组成。
实际参数由零个,一个或多个参数组成,每个参数是一个表达式,用逗号隔开。

1
2
3
4
5
6
7
<?php
function add($a,$b)//形式参数,一种形式,在这里,没有具体的值
{
echo $a+$b;
}
add(2,3);//实际参数
?>

函数返回值

是将函数执行后的结果返回给调用者,默认值如果不写返回,则函数的返回值为NULL。

1
2
3
4
5
6
7
<?php
function add($a,$b)
{
return $a+$b;//返回值给调用的地方,结束这个函数的运行。
}
var_dump(add(2,3));//可输出
?>

调用了add函数

1
2
3
4
5
6
7
8
<?php
function add($a,$b)
{
return $a+$b;
}
$i=add(2,3);
echo $i;
?>

PHP变量的范围

局部变量

局部变量也称内部变量,是在函数内定义的,其作用域仅限于函数内部(即为{ }内),离开函数后再使用这种变量就是非法的错误的。

1
2
3
4
5
6
7
<?php
function add(){
$i=22;
echo $i;//有意义
}
echo $i;//无意义
add();

全局变量

也叫外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序,文件末尾。
但在PHP函数中无法直接使用全局变量,如需使用,必须用global声明变量。

1
2
3
4
5
6
7
<?php
$i=10;
function add(){
global $i;//声明$i为全局变量,然后在这个函数内部就可以使用$i;
echo $i;
}
add();

静态变量

在函数内部定义变量时,使用static关键字来定义变量。

1
2
3
4
5
6
7
8
<?php
function add(){
static $i=23;//静态变量,仅在第一次调用时执行,
echo ++$i;//当第二次执行这个函数的时候,$i这个变量依旧存在
}
add();
echo'<br />';
add();

在这里插入图片描述

而缺少关键字

1
2
3
4
5
6
7
8
<?php
function add(){
$i=22;
echo ++$i;//有意义
}
add();
echo'<br />';
add();

在这里插入图片描述

参数的传递

按值传递参数

默认的,我们在传递参数的时候默认使用的就是这个方式。
对于形式参数的操作,根本不是影响到实际参数(变量)的值,两者 相当于没有联系!

1
2
3
4
5
6
7
<?php
function add($i){
echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;

在这里插入图片描述

按引用传递参数

按引用传递参数,相当与形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际的参数(变量)

1
2
3
4
5
6
7
<?php
function add(&$i){
echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;

在这里插入图片描述

函数的默认参数

可以给形式参数设置默认值,设置方法很简单直接赋值即可!

1
2
3
4
5
<?php
function add($i=10){
echo ++$i;
}
add();

如果不传,按上面的值走。

在这里插入图片描述

1
2
3
4
5
<?php
function add($i=10){
echo ++$i;
}
add(20);

如果传的话,按下面的实际参数值走。
在这里插入图片描述
注意:形式参数加默认值,要从右往左。

1
2
3
4
5
<?php
function add($a=1,$i){
echo $a+$i;
}
add(,20);

会报错,要将右面的$i先赋值。才可以对于$a 进行赋值。

1
2
3
4
5
<?php
function add($a,$i=1){
echo $a+$i;
}
add(3,);

1
2
3
4
5
<?php
function add($a,$i=1){
echo $a+$i;
}
add(3);

均可的到,如图所示。
在这里插入图片描述
以次同理…

可变长度参数

fun_get_args();//数组类型
fun_get_arg();//括号内可加数字(从0开始),代表要输出传入的第几个实参。
多为var_dump(fun_get_arg());
func_num_args();//返回传入函数的参数个数
这三个函数可以使用在我们的定义函数内部,能够返回给我们一些关于参数的信息。

可变函数(变量函数)

可变函数不能直接用于例如 echo,print,unset(),isset();empty(),include,require 以及类似的语言结构,

1
2
3
4
5
6
<?php
function text(){
echo '可变text';
}
$a='text';//把函数名字加上引号,赋值给变量即可,
$a(2);//text();

递归函数

在函数内部,自己调用自己,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function text($n){
echo $n.'可变';//前
if($n>0)
{
text($n-1);
}
else{
echo'<-->';
}
echo $n.'可变';//后
}
text(3);
$n 是局部变量,在分配的空间里面相互独立,没有关联。

在这里插入图片描述

当先输入3执行完后键入判断,判断要求用test(),函数test()没有执行完毕,后面的输出3也不会执行。

内部(内置)函数

php提供给我们许多现成的函数或者结构,我们可以在实际的开发中直接使用。
还有一些函数需要开启 特定的php扩展模块,否则在使用他们时会得到一个致命的“未定义函数”错误。
在这里插入图片描述


Author: BvxiE
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source BvxiE !
  TOC