PHP笔记:PHP中的函数使用函数

四月 12, 2019 | views
Comments 0

函数是一门程序中不可少的一个重要的东西,很多东西我们会做成函数这样可以方便重复调用了,下面本文章重点就是介绍函数php函数用法.

一、函数的声明

1、语法结构,代码如下:

  1. function 函数名 (参数列表) 
  2.     函数体; //可选 
  3.     返回值; //return可选 

参数列表用逗号隔开,勿遗漏$变量符号,函数名不区分大小写,规则与变量一致,函数调用才执行,可先调用后声明,函数名不能重名,包括系统函数.

2、函数调用,代码如下:

  1. function sum($x,$y//形参:在声明函数时声明的参数 
  2.     // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。 
  3.     // $y = 2; //开源软件:phpfensi.com 
  4.     $sum = 0; 
  5.     $sum = $x + $y
  6.     return $sum//执行到return函数结束,后面不再执行 
  7. sum(); 
  8. sum(2,2); //实参:在调用函数时传递给形参的数值 
  9. echo sum(2,2); //通过return返回数据可作为值使用 

二、函数中的变量

1、变量范围

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

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

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

  1. $a = 1; 
  2. $b = 2; 
  3. function demo($a = ''
  4.     //global 须放在前面 
  5.     //global $a,$b global 可包含多个全局变量 
  6.     //$GLOBALS['a'] //声明全局变量 方法二 
  7.     global $a
  8.     $a += 5; 
  9.     echo $a
  10. demo(); 

2、PHP静态变量

静态变量可以在同一个函数中多次调用中共用,静态变量只能在函数或类中声明,不能在全局声明,代码如下:

  1. function demo($a = ''
  2.     static $a = 0; //定义静态变量 
  3.     $a++; 
  4.     echo "$a <br>"
  5. demo(); //输出1 
  6. demo(); //输出2 

3、变量函数,代码如下:

  1. $var = 'hello'//变量名后面右括号,就寻找与变量值同名的函数 
  2. $var(); //等价于 hello(); 

三、函数分类及声明

1、函数分类,代码如下:

  1. //常规函数 
  2. bool copy(string source,string dest) 
  3. //带mixed,表示可以传任何类型的数据 
  4. bool chown(string filename,mixed user) 
  5. //带&参数的函数,这个参数只能是变量,变量值是动态的 
  6. //对数组进行排序,数组的索引保持和单元的关联 
  7. bool arsort ( array &$array [, int $sort_flags ] ) 
  8. $fruits = array('a''c''b'); 
  9. arsort($fruits); 
  10. var_dump($fruits); 
  11. //默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值 
  12. //如果调用没有赋值,又没有初值则出现警告 
  13. function demo($a=1,$b=2) 
  14.     #code 
  15. demo(); 
  16. //带有...参数的函数,表示可以传任意多个参数 
  17. //在数组开头插入一个或多个单元  
  18. int array_unshift ( array &$array , mixed $var [, mixed $... ] ) 

2、声明多个参数函数,代码如下:

  1. function Test() 
  2.     echo func_num_args(); 
  3. Test('a','b','c');  // 3 
  4. func_get_arg():返回参数列表中的第N个参数 
  5. function Test() 
  6.     echo func_get_arg('1');  
  7. Test('a','b','c'); //b 
  8. //使用实例: 
  9. function cls_mysql() 
  10.     $mysql = func_get_args(); 
  11.     $conn = mysql_connect($mysql['0'], $mysql['1'], $mysql['2']); 
  12. cls_mysql('localhost:3306''root''123456'); 

3、函数注释规范,代码如下:

  1. /** 
  2.  * 用用演示函数 //函数功能,决定是否使用 
  3.  *  
  4.  * @static 
  5.  * @access public 
  6.  * @param string $attributeName 属性名称 //函数参数,决定怎样调用 
  7.  * @return string //函数的返回值,决定调用后怎么处理 
  8.  */ 
  9. public function demo($attributeName
  10.     $attributeName = 'abc'
  11.     return $attributeName 

四、Callback 回调函数

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

  1. function A($x,$y
  2.     return $x*$y
  3. function B($a,$b,$fun
  4.     return $a+$b+$fun($a,$b); 
  5. echo B(2,3,"A"); 

PHP回调函数的实现方法

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持,代码如下:

  1. //mixed call_user_func_array 以数组的形式接收回调函数的参数 
  2. mixed call_user_func_array ( callable $callback , array $param_arr ) 
  3. call_user_func_array('f1',array('A','B')); 
  4. //call_user_func的参数个数根据回调函数的参数来确定 
  5. mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) 
  6. call_user_func_array('f1','A','B'); 

实例代码如下:

  1. //普通全局函数 
  2. function f1($arg1,$arg2
  3.     echo $arg1."<br>".$arg2."<br>"
  4. echo "通过call_user_func_array调用函数f1:<br>"
  5. call_user_func_array('f1',array('A','B')); 
  6. echo "通过call_user_func调用函数f1:<br>"
  7. call_user_func('f1','C','D'); 
  8. //类 
  9. class myClass 
  10.     public $name
  11.     function show($arg1
  12.     { 
  13.         echo '参数名:'.$arg1."<br>"
  14.         echo '对象中的成员名:'.$this->name; 
  15.         echo "<br>"
  16.     } 
  17.     function show1($arg1,$arg2
  18.     {   
  19.         echo $arg1."<br>".$arg2."<br>"
  20.     } 
  21.     public static function show2($arg1,$arg2)   
  22.     { 
  23.         echo $arg1."<br>".$arg2."<br>"
  24.     } 
  25. echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:<br>"
  26. $a = new myClass; 
  27. $a->name = 'F'
  28. call_user_func_array(array($a,'show'),array('E')); 
  29. echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:<br>"
  30. call_user_func_array(array('myClass','show1'),array('G','H')); 
  31. echo "调用类中静态成员函数:<br>"
  32. call_user_func_array(array('myClass','show2'),array('I','J')); 

五、内部函数

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



zend