php 函数function讲解与分析
一、函数的声明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','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." } echo "通过call_user_func_array调用函数f1: call_user_func_array('f1','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." } public static function show2($arg1,$arg2) { echo $arg1." } } 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')); 五、内部函数在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |