在php中,函数的使用,PHP笔记:PHP中的函数使用函数

一、函数的声明

1、语法结构

代码如下

function 函数名 (参数列表)

{

函数体; //可选

返回值; //return可选

}

参数列表用逗号隔开,勿遗漏$变量符号

函数名不区分大小写,规则与变量一致

函数调用才执行,可先调用后声明

函数名不能重名,包括系统函数

2、函数调用

代码如下

function sum($x,$y) //形参:在声明函数时声明的参数

{

// $x = 1; //如果在函数内对参数赋值,则会覆盖实参。

// $y = 2;

$sum = 0;

$sum = $x + $y;

return $sum; //执行到return函数结束,后面不再执行

}

sum();

sum(2,2); //实参:在调用函数时传递给形参的数值

echo sum(2,2); //通过return返回数据可作为值使用

二、函数中的变量

1、变量范围

局部变量:函数内部声明与使用的变量

全局变量:在函数外声明,脚本任何地方均可以使用

Tips:在PHP函数中使用全局变量,要通过global关键字将这个全局变量包含到函数中才能使用

代码如下

$a = 1;

$b = 2;

function demo($a = '')

{

//global 须放在前面

//global $a,$b global 可包含多个全局变量

//$GLOBALS['a'] //声明全局变量 方法二

global $a;

$a += 5;

echo $a;

}

demo();

2、PHP静态变量

静态变量可以在同一个函数中多次调用中共用

静态变量只能在函数或类中声明,不能在全局声明。

代码如下

function demo($a = '')

{

static $a = 0; //定义静态变量

$a++;

echo "$a

";

}

demo(); //输出1

demo(); //输出2

3、变量函数

代码如下

$var = 'hello'; //变量名后面右括号,就寻找与变量值同名的函数

$var(); //等价于 hello();

三、函数分类及声明

1、函数分类

代码如下

//常规函数

bool copy(string source,string dest)

//带mixed,表示可以传任何类型的数据

bool chown(string filename,mixed user)

//带&参数的函数,这个参数只能是变量,变量值是动态的

//对数组进行排序,数组的索引保持和单元的关联

bool arsort ( array &$array [, int $sort_flags ] )

$fruits = array('a', 'c', 'b');

arsort($fruits);

var_dump($fruits);

//默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值

//如果调用没有赋值,又没有初值则出现警告

function demo($a=1,$b=2)

{

#code

}

demo();

//带有...参数的函数,表示可以传任意多个参数

//在数组开头插入一个或多个单元

int array_unshift ( array &$array , mixed $var [, mixed $... ] )

2、声明多个参数函数

代码如下

function Test()

{

echo func_num_args();

}

Test('a','b','c');  // 3

func_get_arg():返回参数列表中的第N个参数

function Test()

{

echo func_get_arg('1');

}

Test('a','b','c'); //b

使用实例

代码如下

function cls_mysql()

{

$mysql = func_get_args();

$conn = mysql_connect($mysql['0'], $mysql['1'], $mysql['2']);

}

cls_mysql('localhost:3306', 'root', '123456');

3、函数注释规范

代码如下

/**

* 用用演示函数 //函数功能,决定是否使用

*

* @static

* @access public

* @param string $attributeName 属性名称 //函数参数,决定怎样调用

* @return string //函数的返回值,决定调用后怎么处理

*/

public function demo($attributeName)

{

$attributeName = 'abc';

return $attributeName

}

四、Callback 回调函数

我们自定义一个函数A,但是我们不直接去调函数A,而是在函数B中去调用函数A,函数B通过接收函数A的名字和参数来实现对函数A的调用,函数A称为回调函数。

代码如下

function A($x,$y)

{

return $x*$y;

}

function B($a,$b,$fun)

{

return $a+$b+$fun($a,$b);

}

echo B(2,3,"A");

PHP回调函数的实现方法

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持

代码如下

//mixed call_user_func_array 以数组的形式接收回调函数的参数

mixed call_user_func_array ( callable $callback , array $param_arr )

call_user_func_array('f1',array('A','B'));

//call_user_func的参数个数根据回调函数的参数来确定

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

call_user_func_array('f1','A','B');

实例:

代码如下

//普通全局函数

function f1($arg1,$arg2)

{

echo $arg1."

".$arg2."

";

}

echo "通过call_user_func_array调用函数f1:

";

call_user_func_array('f1',array('A','B'));

echo "通过call_user_func调用函数f1:

";

call_user_func('f1','C','D');

//类

class myClass

{

public $name;

function show($arg1)

{

echo '参数名:'.$arg1."

";

echo '对象中的成员名:'.$this->name;

echo "

";

}

function show1($arg1,$arg2)

{

echo $arg1."

".$arg2."

";

}

public static function show2($arg1,$arg2)

{

echo $arg1."

".$arg2."

";

}

}

echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:

";

$a = new myClass;

$a->name = 'F';

call_user_func_array(array($a,'show'),array('E'));

echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:

";

call_user_func_array(array('myClass','show1'),array('G','H'));

echo "调用类中静态成员函数:

";

call_user_func_array(array('myClass','show2'),array('I','J'));

五、内部函数

在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值