美文网首页
PHP-自定义函数和内部函数

PHP-自定义函数和内部函数

作者: AGEGG | 来源:发表于2019-03-14 13:11 被阅读0次

    变量作用域与静态变量

    函数的参数及函数的引用传递
    函数的返回值及引用返回
    外部文件的导入
    系统内置函数

    变量的作用域也成变量的范围,变量的范围即它定义的上下文背景(也是它生效范围)。大部分的php变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件
    global关键字
    $GLOBALS 及 其他超全局数组

    $outer = 'str';//全局变量
    function myfunc()
    {
      global $outer;//使用global可以拿到全局变量
      echo $outer;//局部变量,没有global拿不到全局变量
    }
    
    $outer = 'str';
    function myfunc()
    {
      global $outer;
          $GLOBALS['outer'];
    }
    

    静态变量

    静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不会消失。

    static关键字
    1.仅初始化一次
    2.初始化时需要赋值
    3.每次执行函数该值会保留
    4.static修饰的变量是局部的,仅在函数内部有效
    5.可以记录函数的调用次数,从而可以在某些条件下终止递归

    function myfunc()
    {
    static $a = 1;
    echo $a++;
    //myfunc()-->1
    //myfunc()-->2
    //myfunc()-->3
    }
    

    EX

    $count = 5
    function get_count()
    {
         static $count;//第一次未初始化为NULL
          return $count++;//先return后++,第一次为NULL,第二次为第一次++的1
    }
    echo $count;//5
    ++$count;
    echo get_count();//NULL
    echo get_count();1
    

    函数的参数

    默认情况下,函数通过值传递
    如果希望允许函数修改它的值,必须通过引用传递参数

    $a = 1;
    function myFunc(&$a)//引用传参可以修改参数的值
    {
      $a = 2;
    }
    myFunc($a);//只能传变量
    echo $a;
    

    函数的返回值

    值通过使用可选的返回语句(return)返回
    可以返回包括数组和对象的任意类型
    返回语句会终止函数执行,将控制权交回函数调用处
    省略return,返回值为NULL,不可有多个返回值

    函数的引用返回
    从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符&

    function &myfunc()
    {
    $static $b = 10;
    return $b;
    }
    $a = myfunc();//10
    $a = &myfunc();//10
    $a = 100;
    echo myfunc();//100
    

    外部文件的导入

    include/require语句包含并运行指定文件
    如果给出路径名按照路径来找,否则从include_path中查找
    如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找
    当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围

    加载过程中未找到文件则include结构会发出一条警告;这一点和require不同,require会发出一个致命错误
    require在出错时产生E_COMPILE_ERROR级别的错误。
    换句话说将导致脚本终止而include只产生警告(E_WARNING),脚本会继续运行。

    require(include)/require_one(include_once)唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。

    系统内置函数

    //时间日期函数
    date(),strtotime(),mktime(),time(),microtime(),date_default_timezone_set()
    //IP处理函数
    ip2long(),long2ip()
    //打印处理
    print(),printf(),print_r(),echo,sprintf(),var_dump(),var_export()
    //序列化及反序列化函数
    serialize(),unserialize()
    //字符串处理函数
    implode(),explode(),join(),strrev(),trim(),ltrim(),rtrim(),strstr(),number_format()
    //数组处理函数
    array_keys(),array_values(),array_diff(),array_intersect(),array_merge(),array_shift(),array_unshift(),array_pop(),array_push,sort()
    

    EX

    <?php
    
    $var1 = 5;
    $var2 = 10;
    
    function foo(&$my_var)
    {
        global $var1;//5
        $var1 += 2;//7
        $var2 = 4;//4
        $my_var += 3;//8
        return $var2;//4
    }
    
    $my_var = 5;
    echo foo($my_var). "\n";//4
    echo $my_var. "\n";//8//引用地址为8
    echo $var1;//7 global变成全局,函数内为7
    echo $var2;//10//本身为全局的10
    $bar = 'foo';
    $my_var = 10;
    echo $bar($my_var). "\n";//4
    

    相关文章

      网友评论

          本文标题:PHP-自定义函数和内部函数

          本文链接:https://www.haomeiwen.com/subject/bbkxmqtx.html