PHP教程第十讲.docx

上传人:b****6 文档编号:3601037 上传时间:2022-11-24 格式:DOCX 页数:7 大小:17.13KB
下载 相关 举报
PHP教程第十讲.docx_第1页
第1页 / 共7页
PHP教程第十讲.docx_第2页
第2页 / 共7页
PHP教程第十讲.docx_第3页
第3页 / 共7页
PHP教程第十讲.docx_第4页
第4页 / 共7页
PHP教程第十讲.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

PHP教程第十讲.docx

《PHP教程第十讲.docx》由会员分享,可在线阅读,更多相关《PHP教程第十讲.docx(7页珍藏版)》请在冰豆网上搜索。

PHP教程第十讲.docx

PHP教程第十讲

一、用户自定义函数

一个函数可由以下的语法来定义:

 Example1展示函数用途的伪代码:

php

functionfoo($arg_1,$arg_2,...,$arg_n)

{

echo"Examplefunction.\n";

return$retval;

}

?

>

任何有效的PHP代码都有可能出现在函数内部,甚至包括其它函数和类定义。

函数名和PHP中的其它标识符命名规则相同。

有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。

除非是下面两个例子中的情况,函数必须在其调用之前定义。

 Example2条件函数:

php

$makefoo=true;

/*我们不能在处调用foo()函数,

因为它还不存在,但可以调用bar()函数。

*/

bar();

if($makefoo){

functionfoo()

{

echo"Idon'texistuntilprogramexecutionreachesme.\n";

}

}

/*现在我们可以安全调用函数foo()了,

因为$makefoo值为真*/

if($makefoo)foo();

functionbar()

{

echo"Iexistimmediatelyuponprogramstart.\n";

}

?

>

Example3函数中的函数:

php

functionfoo()

{

functionbar()

{

echo"Idon'texistuntilfoo()iscalled.\n";

}

}

/*现在还不能调用bar()函数,因为它还不存在*/

foo();

/*现在可以调用bar()函数了,因为foo()函数

的执行使得bar()函数变为已定义的函数*/

bar();

?

>

PHP中的所有函数和类都具有全局作用域,可以在内部定义外部调用,反之亦然。

PHP不支持函数重载,也不可能取消定义或者重定义已声明的函数。

Note:

函数名是大小写无关的,不过在调用函数的时候,通常使用其在定义时相同的形式。

Example4递归函数:

php

functionrecursion($a)

{

if($a<20){

echo"$a\n";

recursion($a+1);

}

}

?

>

二、函数的参数

通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。

PHP支持按值传递参数(默认),通过引用传递参数以及默认参数。

也支持可变数量的参数;Example1向函数传递数组:

php

functiontakes_array($input)

{

echo"$input[0]+$input[1]=",$input[0]+$input[1];

}

?

>

1.通过引用传递参数

缺省情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。

如果希望允许函数修改它的参数值,必须通过引用传递参数。

如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面预先加上符号&:

 Example2用引用传递函数参数:

php

functionadd_some_extra(&$string)

{

$string.='andsomethingextra.';

}

$str='Thisisastring,';

add_some_extra($str);

echo$str;//outputs'Thisisastring,andsomethingextra.'

?

>

2.默认参数的值

函数可以定义C++风格的标量参数默认值,如下:

 Example3在函数中使用默认参数:

php

functionmakecoffee($type="cappuccino")

{

return"Makingacupof$type.\n";

}

echomakecoffee();

echomakecoffee(null);

echomakecoffee("espresso");

?

>

以上例程会输出:

Makingacupofcappuccino.

Makingacupof.

Makingacupofespresso.

三、返回值

值通过使用可选的返回语句返回。

可以返回包括数组和对象的任意类型。

返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。

 Example1return的使用:

php

functionsquare($num)

{

return$num*$num;

}

echosquare(4);//outputs'16'.

?

>

函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。

Example2返回一个数组以得到多个返回值:

php

functionsmall_numbers()

{

returnarray(0,1,2);

}

list($zero,$one,$two)=small_numbers();

?

>

从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符&:

 Example3从函数返回一个引用

php

function&returns_reference()

{

return$someref;

}

$newref=&returns_reference();

?

>

四、可变函数

PHP支持可变函数的概念。

这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。

可变函数可以用来实现包括回调函数,函数表在内的一些用途。

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

需要使用自己的包装函数来将这些结构用作变量函数。

 Example1可变函数示例:

php

functionfoo(){

echo"Infoo()
\n";

}

functionbar($arg=''){

echo"Inbar();argumentwas'$arg'.
\n";

}

//使用echo的包装函数

functionechoit($string)

{

echo$string;

}

$func='foo';

$func();//Thiscallsfoo()

$func='bar';

$func('test');//Thiscallsbar()

$func='echoit';

$func('test');//Thiscallsechoit()

?

>

还可以利用可变函数的特性来调用一个对象的方法。

Example2可变方法范例:

php

classFoo

{

functionVariable()

{

$name='Bar';

$this->$name();//ThiscallstheBar()method

}

functionBar()

{

echo"ThisisBar";

}

}

$foo=newFoo();

$funcname="Variable";

$foo->$funcname();//Thiscalls$foo->Variable()

?

>

五、匿名函数

Example1Anonymousfunction示例

php

echopreg_replace_callback('~-([a-z])~',function($match){

returnstrtoupper($match[1]);

},'hello-world');

//输出helloWorld

?

>

闭包函数也可以作为变量的值来使用。

PHP会自动把表达式转换成内置类Closure的对象实例。

把一个closure对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号。

 Example2匿名函数变量赋值示例:

php

$greet=function($name)

{

printf("Hello%s\r\n",$name);

};

$greet('World');

$greet('PHP');

?

>

六、小结

本节讲了PHP的函数,可以使用function关键字定义,PHP中还支持可变函数、引用函数和匿名函数。

七、练习

掌握返回引用的函数和返回值的函数的区别。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1