1.
声明函数Function(函数关键字) function_name(函数名称)($argument1,$argument2,....$argutentn
(要传递给函数的值))
{
//
函数代码code: 在函数被调用的时候执行一段
代码.如果有两条或者多条语句,则代码必须用大括号"{}"括起来.但是,如果只有一条代码,则不需要大括号.
Return 返回值: 将调用的代码需要的值返回.任何类型都可以返回,包括列表和
对象.这导致函数立即结束它的运行,并且将控制权传递回它被调用的行.
}
2
.无参函数应用 //该函数无返回值
<?php
function foo() { echo "天气好热<br>"; echo "希望明天下雨<br>"; } echo "函数还没有被调用呢!<br>";
foo(); //开始调用函数 echo "函数调用成功!";
?>
输出结果:
函数还没有被调用呢!
天气好热
希望明天下雨
函数调用成功!
3.有参数函数 php支持按值传递参数(默认),通过引用传递和默认参数值.可变长度参数列表仅在PHP4和后续版本中被支持.
(1).
值传递参数:按值进行参数传递是PHP的默认传递方式.使用这个方法,必须在主程序调用时传递一个值(参数).
例:
<?php
function sum($a,$b)
{
echo $a+$b;
}
sum(10,20); //开始调用该函数 ?>
输出结果:
30
(2).
引用传递:在按照值传递的时候,只有参数的副本传递给被调用的函数.但是在被调用函数内部对这些值的任何修改,都不会影响调用函数中的原始值.引用传递其实也就是地址传递,将一个变量作为参数传递.
例:
<?php
$myNum=100;
function Valuechange($number)
{
$number=$number+1;
echo $number."<br>";
}
Valuechange($myNum);
echo $myNum;
?>
输出结果:
101
100

从上面的结果可以看出,虽然在函数内部将$number的值增加了,但是实际上并没有改变$myNum的值.
很多时候,将一个参数传递给函数,而且该函数的新值要返回给调用程序,由于值传递不能实现,可以通过引用来进行.
通过引用传递参数比较简单,只需要直接在参数前面添加"
&"符号就可以.
例:
<?php
$myNum=100;
function Valuechange($number)
{
$number=$number+1;
echo $number."<br>";
}
Valuechange(
&$myNum);
echo $myNum;
?>
输出结果:
101
101
从输出结果可以看到,通过引用传递,变量$myNum的值在函数内部被改变了.
(3).默认传递:使用默认的参数值传递方法,函数必须在调用的时候有一个参数.如果没有要使用的值,就把默认值传递给函数参数.
默认值必须是常量表达式,不是变量、类成员或者函数调用.
提示: 当使用默认参数时,任何默认参数必须放在非默认参数的右侧;否则,可能函数不会按照预期的情况
工作.
例:
<?php
//默认值的应用
function hobby($style="运动")
{
return "我喜欢$style<br>";
}
echo hobby();
echo hobby("唱歌");
function hobby_1($who,$type="跳舞")
{
return "$who 喜欢 $type<br>";
}
echo hobby_1("张三");
echo hobby_1("第三","逛街");
//默认值的不正确使用,默认值必须在其他参数的右边
//因为会产生警告信息
/*20:*/ function hobby_2($type="跳舞",$who) {
return "$who 喜欢 $type<br>";
}
/*25:*/ echo hobby_2("张三"); //但是下面的调用方法可以
//但是默认值就失去了意义
?>
输出结果:
我喜欢运动
我喜欢唱歌
张三 喜欢 跳舞
第三 喜欢 逛街
Warning: Missing argument 2 for hobby_2(), called in D:\AppServ\www\Test\a_inc.php on line 25 and defined inD:\AppServ\www\Test\a_inc.phpon line20
喜欢 张三
从输出结果可以看出,前面两个函数正常运行,而最后一个函数,则出现参数警告,显示结果为"喜欢张三".因为此时默认参数没有发挥作用.但是如果改成"hobby_2("爬山","张三")"还是可以运行的,但默认参数就失去了意义了.
(4).函数返回值:如果在一个函数中调用Return()语句,将立即结束函数的执行,并将它的参数作为参数的值返回.return()会终止eval()语句或者脚本文件的执行.
如果在全局范围中调用,则当前脚本文件中止运行.如果当前脚本文件是被include(),则return()的值会被当作include()调用的返回值.如果在主脚本文件中调用return(),则脚本中止运行.如果当前脚本文件是在php.ini中的配置选项auto_prepend_file或者auto_append_file所指定的,则此脚本文件中止运行.
注意:既然return()是语言结构而不是函数,并不需要用括号将参数括起来.事实上不用括号比用括号更常见,尽管用哪一种并无所谓.
例:
<?php
function square($num)
{
return $num * $num;
}
echo "返回值为:".square(4).'<br>';
//通过数组返回多个数值
function small_numbers()
{
return array(0,1,2);
}
list ($zero,$one,$two)=small_numbers();
echo "返回值为:<br> $zero<br> $one<br> $two";
?>
输出结果:
返回值为:16
返回值为:
0
1
2