PHP函数

函数:用function关键字定义拥有自己名字的完成特定功能的代码段,可以有参数和返回值。

函数定义:function 函数名([形参1,形参2,...形参n]){
          函数体;
          return 返回值;
    }
代码:

1 function Add($a,$b){
2     return $a+$b;
3 }

函数的命名:
  1.函数的名称不能和已有的重名
  2.函数名称只能包含字母、数字、下划线
  3.函数名称不能以数字开始

函数调用:函数名([实参1,实参2,...实参n]);
  注:1.调用未定义的函数PHP会报致命错误(Fatal error)
    2.函数调用不区分大小写

PHP变量作用范围
  局部变量:局部变量也成为内部变量,是在函数内部声明的变量(包括形参),其作用域仅限于函数内部。当每次函数被调用时,函数内部的变量才被声明,执行完毕后函数内部的变量都会被释放。

  全局变量:全局变量也成为外部变量,是在函数外部定义的,作用域从变量定义开始,到本程序文件末尾。
  注:全局变量不是自动设置为可用的,在PHP中由于函数被视为单独的程序片段,所以局部变量会覆盖全局变量的能见度,因此在函数中无法直接调用全局变量。需要使用global关键字或者   $GLOBAL数组。
代码:

1 $a=$b=10;
2 echo add();
3 function add(){
4     global $a,$b;
5     return $a+$b;
6 }
1 $a=$b=10;
2 echo add($a,$b);
3 function add(){
4     $c=$GLOBALS['a']+$GLOBALS['b'];
5     return $c;
6 }


静态变量:局部变量从存储方式上可分为动态存储类型和静态存储类型。函数中的局部变量如果不专门声明在static存储类别,默认都是动态存储。而声明为static静态存储,在函数被调用时,静态变量不会消失,而是在所有调用者之间共享。
代码:
  

1 function demo(){
2     static $a=1;
3     return $a++;
4 }
5   echo demo();    //1
6   echo demo();    //2
7   echo demo();    //3



声明各种形式的PHP函数
  1.常规参数的函数:实参和形参个数相等,类型一致,一一对应。
  代码:

1 function demo($a,$b){
2     return $a+$b;
3 }
4 var_dump(demo(10,20));

  2.引用参数的函数:在PHP中默认形参传值属于值传递,加上&符可变变为引用传递,即把该变量(一定要是变量不能是数值)的内存存储区块相对地址导入函数之中。当该变量在函数内部发生变化时,函数外面父程序也会相应的变化。
代码:

 1 function demo(&$a){
 2     $a=$a+1;
 3 }
 4 function demo1($a){
 5     $a=$a+1;
 6 }
 7 $a=10;
 8 echo $a;echo "<br>";    //10
 9 demo1($a);
10 echo $a;echo "<br>";    //10
11 demo($a);
12 echo $a;    //11

  3.默认参数的函数:在定义时声明了参数,而在调用时没有指定或者少指定参数就会出现缺少参数警告(Warning),PHP支持默认方式调用,为形参设置默认值。
代码:

1 function demo($a=10,$b=20){
2     return $a+$b;
3 }
4 echo demo();    //30

  4.可变个数参数的函数:使用默认参数适合实参个数少于形参的情况,而可变个数参数的函数适合实参多余形参的情况。
代码:

1 function demo(){
2     $args=func_get_args();
3     for($i=0;$i<count($args);$i++){
4         echo "第".($i+1)."个参数是:{$args[$i]}.<br>";
5     }
6 }
7 demo(1,2,3,4,5,6,7,8);    

  注:三个系统函数
    1> func_get_args()函数返回所有参数组成的数组
    2> func_get_arg() 函数接受一个数字参数
    3> func_num_args()函数返回参数的总数

  5.回调函数:所谓回调函数就是指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中。
      1>变量函数:将一个函数的名字赋值给一个变量,使用该变量时加上小括号就是调用这个函数。
代码:

1 function demo(){
2     echo 100;
3 }
4 $a="demo";
5 $a();

    2>使用变量函数声明和应用回调函数
代码:

 1 function filter($fun){
 2     for($i=0;$i<=100;$i++){
 3         if($fun($i))
 4             continue;
 5         echo $i."<br>";    //打印所有奇数
 6     }
 7 }
 8 function demo($num){
 9     return $num%2==0;
10 }
11 $a="demo";
12 filter($a);  

    3>借助call_user_func_array()函数自定义回调函数

  6.递归函数:即自调函数,在函数体内部直接或间接自己调用自己。通常此类型的函数体之中会附加一个条件判断,在特定条件下终止递归,防止死循环。
代码:

 1 function add($n){
 2     if($n==1){    
 3         return 1;
 4     }else{
 5         $n+=add($n-1);
 6     }
 7     return $n;
 8 }
 9 echo add(100);
10             
原文地址:https://www.cnblogs.com/yexiang520/p/5544492.html