• PHP面试 PHP基础知识 五(自定义函数和内部函数)


    自定义函数

      变量的作用域和静态变量

         变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围)。

         大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。

      global  关键字

      $GLOBALS 及其他超全局数组

    $outer = 'str'; //全局变量   不能拿到函数体内部使用
    function mgfunc()
    {
        global $outer;  //使用global关键字  可以把外部变量拿到内部使用
        $GLOBALS['outer']; //    也可以把全局变量拿到函数内部使用
         echo $outer;   //局部变量    和外部变量没有关联
    }

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

          static关键字

            1、仅初始化一次

            2、初始化时需要赋值

            3、每次执行函数该值会保留

            4、static修饰的变量是局部的,仅在函数内部有效

            5、可以记录函数的调用次数,从而可以在某些条件下终止递归

          

    function mgfunc()
    {
         static $a = 1;
        
          echo $a++;  
    }
    
    myfunc();   //第一次调用   结果为1
    
    myfunc();  //第二次调用   结果为2
    
    myfunc();  //第三次调用   结果为3
    
    
    //以上结果证明    static关键字声明静态变量    其值不会消失

      延伸:函数的参数及参数的引用传递

        默认情况下,函数参数通过值传递

        全局变量如果希望允许函数修改它的值,必须通过引用传递参数

    $a = 1;
    function myfunc( $a )
    {
        $a = 2;
    }
    
    myfunc($a);
    echo $a;   //输出结果为1   函数内部变量值改变与外部变量没有关系
    
    
    //如果  希望内部函数修改全局变量的值  需要通过引用传参的方式&
    
    $a = 1function myfunc( &$a )
    {
          $a = 2;  
    }
    
    myfunc($a);      //只能传变量
    echo $a;   //输出结果为2
      延伸:函数的返回值及引用返回

        函数的返回

        值通过使用可选的返回语句(return)返回

        可以返回包括数组和对象的任意类型

        返回语句会终止函数执行,将控制权交回函数调用处

        省略return,返回值为null ,不可有多个返回值     返回多个值  可以返回一个数组   把值放在一个数组中

        引用返回

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

        

    function &myfunc()
    {
    
        static $b = 10 ;
        return  $b;
    
    }   
    
    echo myfunc();  //结果10   正常调用
    
    $a = &myfunc();  //  此时就是把$a 和$b 互为引用
    
    $a = 100;
    
    echo myfunc();  //结果为100;  
      延伸:外部文件的导入

      include/require语句包含并运行指定文件

      如果给出路径名按照路径来找,否则从include_path查找

      如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找

      当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围

      include和require的区别

      加载过程中未找到文件则include结构会发出一条警告;这一点和require不同,后者会发出一个致命错误

      require在出错时产生E_COMPILE_ERROR级别的错误。就是说将导致脚本终止

      include只会产生警告(E_WARNING),脚本会继续执行

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

      延伸:系统内置函数

      时间日期函数

        

       //格式化一个日期
       date()   
       
       //将任何字符串的时间日期解析为时间戳
     strtotime() 
      
       //取得一个日期的时间戳
     mktime() 
       
       //返回当前时间戳
     time()   
       
       //返回当前Unix时间戳的微秒数
     microtime() 
        
       //在脚本中动态设置所有日期时间的时区
     date_default_timezone_set() 
        
       //获取脚本所有日期时间使用的时区
     date_default_timezone_get()     

      ip处理函数

        

    //把IP转换为整型数字(便于存储数据库)
    ip2long() 
    //相反   把整型数字转换为IP
    long2ip()

      打印处理函数

        

    print()  echo()   //都是语言结构   不同是print只能打印一个   echo可以打印多个  用逗号隔开
    
    printf()   sprintf()  //printf会根据格式进行输出   sprintf会返回不会输出
    
    var_dump()   print_r()  
    //print_r会将数组对象格式化好打印出来 打印false不会有输出打印true输出1
    // var_dump会把类型也打印出来   
    
    var_export()     //将内容格式化输出   结果符合PHP语法结构

      序列化及反序列化函数

        

    //序列化用于存储或传递PHP值过程中,同时不丢失其类型和结构
    
    //序列化
    serialize()   
    
    
    //反序列化
    unserialize()
    
    //序列化函数原型如下
    string serialize (mixed $value)
    
    //反序列化函数如下
    
    mixed  unserialize (sting $str)

      字符串处理函数

     //返回字符串长度
       strlen()  
       例:strlen("hello world!");
             输出:12
    
       //查找字符串内指定的字符或文本
       strpos()
       例:strpos("hello world","world");
             输出:world
    
       //将一个一维数组转化为字符串   
       implode()  
       例:$array = array('a','b','c');
             $str = implode(',' , $array);
             输出:a,b,c
       
       //将一个字符串转化为数组
     explode() 
       例:$str = "a,b,c";
             $array =  explode(',' , $str);
             输出:Array ( [0] => a [1] => b [2] => c )
       
       //implode 的别名
     join() 
      例:$arr = array('Hello','World!','I','love','Shanghai!');
            echo join(" ",$arr);
            输出:Hello World! I love Shanghai!        
      
       //反转字符串
     strrev() 
       例:echo strrev("I love Shanghai!");
             输出:!iahgnahS evol I
       
       //移除字符串两侧的空白字符和其他字符。
       trim()   
       例:$str = "Hello World!";
             echo trim($str,"Hed!");
             输出:llo Worl
    
       //移除字符串左侧的空白字符或其他字符
     ltrim() 
       例:$str = "Hello World!";
             echo ltrim($str,"Hello");
             输出:World!
    
       //移出字符串右侧的空白字符或其他字符
     rtrim() 
       例: $str = "Hello World!";
              echo rtrim($str,"World!");
              输出:Hello
        
       //搜索字符串在另一字符串第一次出现  返回字符串的剩余部分
     strstr() 
       例:echo strstr("I love Shanghai!","Shanghai");
            输出:Shanghai!
       
       //通过千位分组来格式化数字
     number_format()  
       例:echo number_format("5000000");
            输出:5,000,000          

      数组处理函数

        

    //返回数组中的所有键名
    array_keys()
    例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach");
          print_r(array_keys($a));
          输出:Array ( [0] => a [1] => b [2] => c )
    
    //返回数组中的所有值
    array_values()
    例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach");
          print_r(array_values($a));
          输出:Array ( [0] => apple [1] => pear [2] => peach )
    
    //返会数组差集 
    array_diff()
    例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach","d"=>"banana");
         $b=array("a"=>"apple","b"=>"pear","c"=>"peach");
         print_r(array_diff($a,$b));
         输出:Array ( [d] => banana )
    
    //返回数组交集
    array_intersect()
    例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach","d"=>"banana");
        $b=array("a"=>"apple","b"=>"pear","c"=>"peach");
        print_r(array_intersect($a,$b));
            输出:Array ( [a] => apple [b] => pear [c] => peach )
    
    //合并数组   返回一个新的数组 
    array_merge()
    例:$a=array("c"=>"peach","d"=>"banana");
          $b=array("a"=>"apple","b"=>"pear");
          print_r(array_merge($a,$b));
          输出:Array ( [c] => peach [d] => banana [a] => apple [b] => pear )
    
    //删除数组中的首个元素,并返回删除元素的值
    array_shift()
    例:$a=array("c"=>"peach","d"=>"banana");
          print_r(array_shift($a));
          输出:peach
    
    //在数组开头插入一个或多个值   返回新数组元素个数
    array_unshift()
    例:$a=array("c"=>"peach","d"=>"banana");
          print_r(array_unshift($a,'apple'));
          输出:3
    
    //删除数组的最后一个元素(出栈)  返回删除的值
    array_pop()
    例:$a=array("c"=>"peach","d"=>"banana");
          print_r(array_pop($a));
          输出:banana
    
    //在数组的最后加入一个元素(入栈)  返回新数组的元素个数
    array_push()
    例:$a=array("c"=>"peach","d"=>"banana");
          print_r(array_push($a, "apple"));
          输出:3
    
    //对数组进行排序   升序排序   成功返回true  失败返回false
    sort() 
    例:$array = array(4,6,2,22,11);
          var_dump(sort($array));
          输出:true 
    
    //对数组进排序    降序排序   成功返回true  失败返回false
    rsort();
    例:$array = array(4,6,2,22,11);
          var_dump(rsort($array));
          输出:true

     重点记忆PHP函数的定义相关内容,理解变量作用域,静态变量,函数的参数和返回值的相关内容,重点记忆上面的内置函数

    更多PHP内部函数 请访问 W3School 在线教程

  • 相关阅读:
    数组与字符串的相互转换
    数组新增,修改json数据
    百度Ueditor设置图片自动压缩
    微信小程序——自定义图标组件
    微信小程序——自定义导航栏
    微信小程序——网盘图片预览
    微信小程序——星星评分
    微信小程序——页面中调用组件方法
    Vue路由获取路由参数
    C#随机颜色和随机字母
  • 原文地址:https://www.cnblogs.com/dcrq/p/11044675.html
Copyright © 2020-2023  润新知