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 在线教程

posted @ 2019-06-18 17:50  进化史  阅读(452)  评论(0编辑  收藏  举报