zoukankan      html  css  js  c++  java
  • php函数

    函数

    函数含义

    • 函数:是实现特定功能的、可以重复执行的代码段;
    • 函数名:从语法上讲,函数名中能有汉字,但在实际开发中不建议使用!

    函数结构

    function 函数名 () {
    	//代码块
    }
    

    函数名定义规则

    • 开头:[a-zA-Z_x7f-xff]
    • 函数名:[a-zA-Z0-9_x7f-xff]
    • 函数的首字母不能为数字、可以是汉子或者字母,函数中间可以使用数字

    函数的返回值

    • 和其他语言不同的是,PHP并没有在函数声明的时候显示函数是否有返回值,如果函数内部使用了return即表示有返回值,反之则表示没有返回值,返回类型可以为对象、数组、字符串等。

    函数变量

    //局部变量
    //局部动态变量:变量只在函数内部执行,执行完毕则被销毁;
    //局部静态变量:使用static修饰,执行完毕不被销毁;
    //注:函数内部定义的变量,为局部变量,函数外部不能访问。
    function func()
    {
        $a = 3;  //局部动态变量
        static $b = 34;  //局部静态变量
    }
    
    //全局变量
    //在函数外部定义的变量,称为全局变量。在函数内部使用全局变量的时候,不能和其他语言一样直接使用,有两种使用方法:
    //(1)用global关键字进行声明后使用
    $a = 3;
    function func()
    {
        global $a;
        echo $a;
    }
    
    //(2)使用超全局变量数组$GLOBALS直接访问
    $a = 3;
    function func()
    {
        echo $GLOBALS['a'];
    }
    

    函数的参数

    值传递和引用传递

    //值传递:当一个变量的值赋予给另外一个变量的时候,改变其中一个变量的值,将不会影响到另外一个变量的值
    
    //引用传递:新变量指向了原始变量,改动新的变量将影响到原始变量,反之亦然。(只有有名字的变量才能引用传递,比如表达式就不可以)
    //注:在函数中传递参数的类型为对象时,即使不加&,也是引用传递,因为对象名对应的是该对象的引用地址。
    
    $a = 4;
    function func1($c)  //值传递
    {
        $c = 7;
    }
    func1($a);
    echo $a, "
    ";  //4,函数没有改变$a的值
    
    function func2(&$d)  //引用传递
    {
        $d = 7;
    }
    func2($a);
    echo $a, "
    ";  //7,函数改变了$a的值
    

    参数默认值

    //如果$a和$b没有默认值,调用该函数的时候必须传值,否则会报错,如果有默认值,可以不传参数
    function func($a = 3, $b = 5)
    {
    	echo "a的值为{$a}, b的值为{$b}
    ";
    }
    func();
    

    可变参数列表

    /*
     *在函数定义时,形参可以省略不写,在函数内部可以通过系统方法获取传递进行的参数数组。
     *func_num_args():传入函数实参的个数
     *func_get_args():传入函数实参列表(数组形式)
     *func_get_arg(index):传人函数具体位置的实参
     */
    
    function fun6()
    {
        echo func_num_args(), "
    ";  //3
        print_r(func_get_args());  //数组
        echo func_get_arg(0);  //10
    }
    fun6(10, 11, 12);
    

    传参类型限定

    //函数定义时,可以给参数限定类型,共三种类型:array,object,callback
    function func(array $a)  //实参必须为数组类型
    {
        print_r($a);
    }
    //func(1);  //会报错
    func([1, 2, 3]);
    

    复杂函数

    可变函数

    //将函数的名字赋值给变量,通过变量去调用函数,让函数的调用更具多样性
    /*
     * is_callable(函数):判断函数能否被调用
     * function_exists(函数):判断函数是否存在
     */
    function func()
    {
        echo 'hello, world', "
    ";
    }
    
    $fun = 'func';
    
    if (is_callable($fun)){  //判断是否能调用
        echo '能调用', "
    ";
        $fun();
    }
    
    if (function_exists($fun)){
        echo '能调用', "
    ";
        $fun();
    }
    

    函数的嵌套

    /*                                                 
    * php所有定义的函数,作用域都是全局的                             
    *                                                 
    * 和其他语言比如java相比,php不存在内置函数,意思就是说bar()不是foo()的内置函数, 
    * 两者没有区别,作用域都是全局的,在bar()函数内不能调用foo()中声明的变量,但是bar()
    * 函数必须在foo()调用之后才会被定义,才能被调用                       
    *                                                 
    */                                                
    function foo()                                     
    {                                                  
    $a = 'hello, world';                           
    function bar()                                 
    {                                              
        /* 不能调用变量$a */                             
        echo 'bar()函数被调用';                         
    }                                              
    
    /* 内部可以调用bar(),因为其已经被定义 */                                                  
    //bar();                                         
    }                                                  
                                                       
    /* 现在不能调用bar(),因为其还没有被定义 */                        
                                                       
    foo();                                             
                                                       
    /* 现在可以调用bar(),因为foo()调用之后,bar()已经被定义 */           
                                                       
    bar();                                             
    

    递归调用:函数调用自己本身,递归里面需要有跳出递归的判断条件

    匿名函数

    /*                                  
     * 匿名函数                             
     * 函数没有指定名称,称为匿名函数                  
     * 通过将函数赋给变量,通过变量来实现调用函数                                            
     */                                 
    $say = function($str) {             
        echo 'hello, world';            
    };                                  
    $say('aaa');
  • 相关阅读:
    Windows下自动解压windows share上的文件
    Jenkins有用的插件
    windows下用时间戳创建文件名
    Jenkins Pulgin 安装
    安装在Linux下的jenkins执行windows下的bat命令
    Linux Shell下执行sqlplus
    Linux 下访问Windows共享目录
    Linux SSH 无密码登录
    Linux 文件编码问题及iconv命令
    Python抓取网页并保存为PDF
  • 原文地址:https://www.cnblogs.com/jackw1/p/12580933.html
Copyright © 2011-2022 走看看