前言

编写PHP程序时,可以自己定义函数,当然如果PHP系统中有直接可用的函数是最好的了。没有时才去自己定义。在PHP系统中有很多标准的函数可供使用,但有一些函数需要和特定的PHP扩展模块一起编译,否则在使用他们的时候就会的一个致命的“未定义函数”错误。例如,要使用图像函数imagecreatetruecolor(),需要在编译PHP的时候加上GD的支持;或者,要使用mysql_connect()函数,就需要在编译PHP的时候加上MySQL的支持。有很多核心的函数已包含在每个版本的PHP中,如字符串和变量函数,调用phpinfo()或者get_loaded_extentsions()函数可以得知PHP加载了那些扩展库。同时还应该注意的是,很多扩展默认就是有效的。

调用系统函数和调用自定义函数方式相同,系统中为我们提供了每一个函数,都会有详细的帮助信息,所以使用函数时没有必要花费大量的时间去研究函数内部是如何执行的,只要参考帮助文档完成函数的调用,能我们需要的功能即可。当然,如果声明一个函数让其他人去应用也应该提供一份该函数的详细使用说明。如果想通过帮助文档成功地应用一个函数,则介绍函数使用的帮助文档就必须包括以下3点:

  1. 函数的功能描述:决定是否使用这个函数。使用哪个函数去完成什么样的任务,都是需要对号入座的,所以通过函数的功能描述就可以让我们决定在自己的脚本中是否使用它。
  2. 参数说明:决定怎么使用这个函数,参数的作用就是执行函数前导入某些数值,以提供函数处理执行,通过函数的参数传值可以改变函数内部的执行行为,所以怎么传值、传什么值,传什么类型的值,传几个值等的详细说明才是决定如何使用函数的关键。
  3. 返回值:调用后如何处理。在脚本中通过获取函数调用后的返回值来决定程序的下一步执行,所以就必须要了解函数是否有返回值、返回什么样的值、返回什么类型的值。

比如下面的自定义函数,就包括了这三方面的帮助信息:

<?php
/**
定义一个求两个整数的和的函数
@param int $i 第一个参数,作为其中一个运算数
@param int $j 第二个参数,作为其中一个运算数
@return int  返回一个计算后整数
*/
function  testSum($i, $j){
	$s = 0;
	$s = $i + $j;
	return $s;
}

echo testSum(2, 4);

执行结果如下:

PHP 自定义常规函数的声明及应用_字符串

PHP函数的参数才是决定如何成功应用一个函数或是控制一个函数执行行为的标准。又因为PHP是弱类型语言,参数的设置和应用有多种方式,所以学会声明具有不同的参数函数,以及可以成功调用各种同形式参数的函数,才是学习PHP函数的关键,接下来本文着重介绍PHP的常规参数的函数。

常规参数函数

常规参数的函数格式如下:

string product(string name, int quantity,double price){//...}

我们所谓的常规参数的函数,就是实参和形参应该个数相等且类型一致,像C/C++或Java等强类型语言的参数使用方法一样。这类函数的调用比较容易,因为灵活性不大,像强类型语言一样要求比较严格(参数个数是固定的,每个参数的类型也是固定的)

在PHP中,如果声明这样的函数就发挥不了PHP弱类型语言的优势。比如,在上面常规参数的函数语法格式示例中,声明一个名为product()的函数,函数执行后返回一个字符串类型的值。该函数有三个参数,调用时传递的参数个数和顺序必须一致,并且第一个参数必须是字符串类型,第二个参数必须是整型,第三个参数必须是双精度浮点类型。再比如前面的testSum()函数求两个整数的和就是一个常规参数的函数,要求必须有两个整型的参数。系统函数也有很多属于这种类型。一些使用常规参数的系统函数如下所示:

string chr(int ascii)//必须使用一个整数作为参数
float ceil(float value)//必须使用一个浮点数作为参数
array array_combine(array keys, array values)//两个参数必须为数组类型的数据
int strnatcmp(string str1, string str2)//两个参数必须为字符串类型
string implode(string glue, array pieces)//第一个参数必须为字符串,第二参数为数组类型
string readdir(resource dir_handle) //必须使用一个资源类型的数据作为参数