第十九课:自定义函数
函数功能强大,使用简单,我们只要按它的要求输入参数,它就能返回我们想要的结果。PHP中还能自定义函数,把那些在编程时要反复用到的功能块定义成一个函数,然后简单的调用。
例如,我们经常要在网页里显示时间,而且时间格式各不一样,那么怎么把它定义成一个函数呢?又怎么调用呢?请看下面的代码19-1:
<?php
//调用方法一
echo myDate(4);
//调用方法二
$a=1;
echo myDate($a);
//调用方法三
$b=6;
$dateStr=myDate($b);
echo $dateStr;
//定义函数
function myDate( $style ){
switch( $style ){
case 1 : $str = date("Y年m月d日"); break;
case 2 : $str = date("Y-m-d"); break;
case 3 : $str = date("m/d/Y"); break;
case 4 : $str = date("y.m.d l"); break;
case 5 : $str = date("M d Y"); break;
case 6 : $str = date("Y年第W周"); break;
default: break;
}
return $str;
}
//定义函数结束
?>
参数
外部信息可以通过参数传递给函数中,参数就是一系列逗号分隔的变量或常量。PHP支持数值形参数,变量参数和默认参数。看一个默认参数使用的例子19-2:
<?php
echo myDate();
function myDate( $style=1 ){
switch( $style ){
case 1 : $str = date("Y年m月d日"); break;
case 2 : $str = date("Y-m-d"); break;
case 3 : $str = date("m/d/Y"); break;
case 4 : $str = date("y.m.d l"); break;
case 5 : $str = date("M d Y"); break;
case 6 : $str = date("Y年第W周"); break;
default: break;
}
return $str;
}
?>
<?php
function add($a,$b,$c=9){
$value = $a*$b+$c;
return $value;
}
echo add(18,25);
?>
函数可以通过可选的return语句来返回需要任何类型的值,这导致函数立即结束它的运行,并且将控制权传递回它被调用的行。例如19-4:
<?php
function square($num)
{
return $num * $num;
}
echo square(4); // 输出 '16'.
?> 
<?php
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?> 
<?php
function &returns_reference()
{
return $someref;
}
$newref =& returns_reference();
?>
函数是一个封闭好的模块,它接受的是形式参数,在调用函数过程中,函数外部的变量不能影响到函数内部,函数内部声明的变量同样不能影响到函数外部的领域。而且函数内部的变量在一般情况下会随函数调用结束而消失。因此,如果你想让外部的变量作用到函数内部,或者函数内部的变量能够在函数调用结束后继续保存,这就要使用关键字global声明。例如19-7:
<?php
$a=5;
$b=8;
function add($c){
global $a,$b; //用global声明全局变量$a,$b,否则函数无法获得你想要的值。
return $a+$b-$c;
}
echo add(9);
?>
好了,你学会定义函数了吗?下面我又要出一道作业题了:做网页时经常要输出各种大小和颜色的文字,我不想每当用它的时候去重复写这些代码,你能帮我写个函数吗?只要输入字号,颜色和文字,它就能显示我想要的效果。
356

被折叠的 条评论
为什么被折叠?



