PHP函数

函数的作用就是让同一段代码可以被多个地方直接调用,从而大大节省编程时间、减少编程错误、减少代码冗余、容易维护代码、实现结构化编程。函数分为系统函数和自定义函数。

函数的定义

所谓函数的定义,就是指采用若干行代码以指明此函数具体的执行过程以及执行之前需要输入什么参数,执行后可以返回什么值。函数定义的语法格式:

function 函数名([形参表]){
函数体
}

其中,形参必须是变量名、数组名;函数名可以是以字母或下划线开头、后面跟任意数量的字母、数字、下划线,但不能与系统函数或用户已经定义的函数名重名。与C语言不同的是,函数定义可以随意放在函数调用语句之前或之后

1
2
3
4
5
6
7
8
9
10
<!doctype html>
<?php
fun(4); //放在定义函数之前 输出:8
function fun($a){
echo($a*2);
}

fun(5); //放在定义函数之后 输出10

?>
函数的返回值

在函数定义内部,可以使用return语句来结束函数的运行,并把一个值返回给主调语句。语法格式:

return[(表达式)];

功能:将表达式的值(作为函数值)带回主调函数中。

函数的调用

(1)函数名(实参表)
(2)变量名=函数名(实参表)
(3)echo函数名(实参表)

注:(1)形式(1)用于调用无返回值的函数,形式(2)(3)用于调用有返回值的函数。
(2)实参的个数、类型必须与形参相同。
(3)实参可以是常量、变量、表达式。

例如:
已知:
y=1(x>0);
y=0(x=0);
y=-1(x<0)
要求:先定义一个函数fun(),用于返回y的值;再写一个函数调用语句,输出y的值。

1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
<?php
function fun($x){
if($x>0) $y=1;
elseif($x==0) $y=0;
else $y= -1;
return($y);
}
echo fun(-2);

?>
参数的传递

函数参数一般都是通过值来传递的,这就意味着函数内部即使修改了形参的值,也不会对主调语句中的实参有影响。但是,当函数形参采用引用参数时,则任何对于形参的值的修改都相当于对实参的值的修改。引用参数的语法格式是在形参前面加&字符。

值传递和引用传递的比较

方式 形参 实参 解释
值传递 变量名 常量、变量、表达式 函数调用时,将实参的值传递给形参
值传递 数组名 数组名 函数调用时,将实参的值传递给形参
引用传递 &变量名 变量名 形参与实参共同占用一个存储单元
引用传递 &数组名 数组名 形参与实参共同占用一个存储单元
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<?php
//形参为变量名
function fun(&$x,$y){
$x += 10;
$y += 10;
}
$a = 1;
$b = 5;
fun($a,$b);
echo("$a,$b"); //输出:11,5
//形参为数组名
function my_sort($b){
for($i=0;$i<count($b);$i++)
$b[$i] += 10;
}

$a = array(2,4,6,8);
my_sort($a);
for($i=0;$i<count($a);$i++)
echo($a[$i].","); //输出:2,4,6,8
?>