当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP学习宝典-第八章(二)

PHP
PHP函数:php中rename()函数的妙用
PHP实例:PHP验证码
PHP实例:PHP无限极分类
PHP实例:PHP操作文件类
PHP实例 PHP实现定时生成HTML网站首页
php脚本中include文件报错解决方法
在PHP中显示格式化的用户输入
PHP教程:在PHP中将图片存放ORACLE中
PHP5中的this,self和parent关键字详解
PHP实例:PHP的拼写检查函数库
PHP教程实例:用PHP打造动态聊天室系统
PHP基础:PHP4和PHP5的配置异同比较
使用PHP4.2.0及以后版本的注意事项
一个非常全面获取图象信息的PHP函数
比较测试PHP+MYSQL分页机制两种方案
PHP中用正则表达式验证中文的问题
php程序如何生成验证码图片
用php或js获取图片大小高宽尺寸
phpMyAdmin2.6以上版本数据乱码问题
巧学巧用:如何使用PHP中的字符串函数

PHP学习宝典-第八章(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 69 ::
收藏到网摘: n/a

进价函式技巧

现在我们来看看函式的一些更神奇的属性,其中包括使用可变参数个数的方法、让函式能够修改传入变数的方法,以及让函式成为资料使用的法方。

这一节的内容是本章最具挑战性的一节,它只适合具有冒险精神、求知欲极强或经验丰富的程序设计师。

可变参数个数

在依据情况呼叫传入函式时,知道实际参数数量是很有用的,在PHP中有三种可能的方式处理,其中一个只能在PHP4使用:

1. 定义带有预设参数的函式,当函式在呼叫中遗漏任何参数时,它都会用预设值来代替,不会显示警告资讯。

2. 使用阵列参数存放这些值,由呼叫的程序码中负责包装这个阵列,函式本体必须适当地将其中的资料分离。

3. 使用PHP4中的可变参数函式(func_num_args()、func_get_arg()和 func_get_args())。

预设参数

为了定义带有预设参数的函式,只需把形式参数变成指定运算式即可。如果实际呼叫时的参数比定义时的形式参数少,PHP会拿形式参数和实际参数进行比对匹配,直到用完为止,然后就使用预设的指定来填满其余参数。

例如,下面的函式中的变数都有是用预设值定义的:

function tour_guide($city = “Gotham City”,

$desc = “vast metropolis”,

$how_many = “dozens”,

$of_what = “costumed villains”)

{

print(“$city is a $desc filled with

$how_many of $of_what.< BR >”);

}

tour_guide();

tour_guide(“Chicago”);

tour_guide(“Chicago”,“wonderful city”);

tour_guide(“Chicago”,“wonderful city”,

“teeming millions”);

tour_guide(“Chicago”,“wonderful city”,

“teeming millions”,

“gruff people with hearts of

gold and hard-luck stories to tell”);

浏览器会输出类似下面的结果,句中的换行符号由所用浏览器决定:

Gotham City is a great metropolis filled with dozens of costumed villains.

Chicago is a great metropolis filled with dozens of costumed villains.

Chicago is a wonderful city filled with dozens of costumed villains.

Chicago is a wonderful city filled with teeming millions of costumed villains.

Chicago is a wonderful city filled with teeming millions of gruff people whit hearts of gold and hard-luck stories to tell.

预设参数的主要限制是,实际参数到形式参数的匹配是由两者的依序比对确定的,先到先服务。因而不能乱用预设参数的设定,以致最后出一堆问题而不自知。

用阵列替代多个参数

如果对多个参数的弹性不怎么满意,可以使用阵列来当成沟通手段,这样可绕过整个参数计数问题。

下面的例子就是使用这个策略,另外还用了几个小技巧,如三元运算子(在第七章中介绍过)和关联阵列(在第六章中提不定期,在第十一章中才会全面讲解):

function tour_brochure($info_array)

{

$city =

IsSet ($info_array[?city?])?

$info_array[?city?]:“Gotham City”;

$desc =

IsSet ($info_array[?city?])?

$info_array[?desc?]:“great metroprlis”;

$how_many =

IsSet ($info_array[?how_many?])?

$info_array[?how_many?]:“dozens”;

$of_what

IsSet ($info_array[?of_what?])?

$info_array[?of_what?]:“costumed villains”;

print(“$city is a $desc filled with

$how_many of $of_what.< BR >”);

}

这个函式检查将传入的阵列参数与特定字符串相隔的四种不同的值进行比较,使用三元条件运算子「?」,区域变数被指定为传入的值(如果已经被储存在阵列中),不然就是以预设值指定。现在,我们尝试用两个不同的阵列呼叫这个函式:

tur_brochure(array()); //空阵列

$tour_info =

aray(?city?=>?Cozumel?,

?desc?=>?destination getaway?,

‘of_what’= >‘sandy beaches’);

tur_brochure($tour_info);

在这个例子中,我们首先用空阵列(对应于无参数)