PHP中的函数声明与使用详解


Posted in PHP onMay 27, 2017

  函数

 1.  函数名是标识符之一,只能有字母数字下划线,开头不能是数字;

     函数名的命名,必须符合“小驼峰法则”FUNC(),func(),Func();

     函数名不区分大小写;

     函数名不能与已有函数同名,不能与内置函数名同名;

 2.   function_exists("func");用于检测函数是否已经声明;

      注意传入的函数名,必须是字符串格式,返回结果为true/false;

      echo打印时,true为1,false不显示;

                        [php中变量的作用域]

  1.局部变量:声明在函数内部的变量,称为局部变量,只在函数内部使用,函数外如需使用,需在函数中使用return关键字返回;

  2.全局变量:声明在函数外部的变量,称为全局变量;

  3.(较为常用)函数中使用变量默认使用局部变量,如果需在函数中使用全局变量,需要使用global关键字将全局变量引入使用;

   函数中的变量名,如果与全局变量名重复,global之上,为函数的局部变量,global之下为函数的全局变量;

 4.$GLOBALS[''] 全局数组;

    $GLOBALS['a3'] 数组,是PHP给我们内置的全局数组,可以直接给数组添加值,无论在函数内外声明,均可在任何地方直接使用;eg:$GLOBALS['a3'] =10;

  5.函数中使用全局变量,还有一种方式:通过给参数传参,可以在函数内部使用全局变量,但是传递以后的参数是局部变量,内部改变,外部不会改变,除非传递的参数是地址.function func($a1,&$a2){}func($a1,$a2);

  (原因)  $a1是局部变量,内部改变,外部不会改变,$a2也是内部变量地址,内部改变,外部也改变;

          如果函数的形参,出现了取地址符号,则调用函数时,实参必须是变量,而不能是字面量 ;

           eg:func($a1,$a2)对的 func($a1,2)错的

                                             【静态变量】

  静态变量:使用static关键字声明,static $num=10;

  静态变量的特点:

     静态变量在函数第一次加载的时候进行声明;

     函数使用完不会立即释放静态变量,静态变量在整个脚本执行过程中只会声明一次;

     同一函数多次调用,共享同一个静态变量。

                                           [函数的参数传递方式]

  在PHP中实参的个数只能比形参多,不能比形参少,否则会报错

 1.常规参数传递:

function fun($a){
  $a+=10;
  return $a;
  }
 echo fun(10);

 2.引用类型的参数:

$a=10;
  function func(&$a){
  $a+=10;
  }func($b);

   引用参数传递,函数内部修改变量,函数外同步变化;

   形参为引用参数,实参只能是变量,不能是字面量。

3.默认参数:

function func($a,$b=10){
  return $a+$b;
  }
  echo func(30);  //$b的默认参数是10

   如果参数中既有默认参数,又有非默认参数,那么,默认参数列表必须要在非默认参数列表的后面,即要保证非默认参数的赋值顺序.    

func_get_args();  //取所有参数列表(数组)
  func_num_args();  //取所有参数的总个数,相当于count(func_num_args());
  func_get_arg(0);  //根据下表,取每个参数

                                 [变量函数 ]

  将一个函数名,转为字符串后,赋给一个变量。这个变量,就是我们所说的变量函数,可以加()调用函数内容;
                function func(){ }---->fun="func",----->func( );

                                 [回调函数]

   1.使用变量函数,自定义回调函数

function($func){func();}-->function f(){}--->func("f");

   2使用call_user_func_array和call_user_func自定义回调函数;

     两个函数的第一个参数,均为回调函数,表示执行当前回调;

     不同点在于:call_user_func_array()第二个参数为数组,并将数组的每一个值赋给回调函数的参数列表,相当于js中的apply(); 而,call_user_func,是将回调函数的参数列表,直接展开写到第2-多个参数中,相当于js中的call();
    eg:call_user_func_array("func",array(1,2,3));--->func(1,2,3);
    call_user_func("func" 1,2,3);---->func(1,2,3);

                                [ 匿名函数]   

    由于变量函数在调用时存在多种调用方式,$fun()/func()所以为了让函数的调用更为统一,才产生了匿名函数。
    声明匿名函数函数体后面的;必不可少!!!

    匿名函数本身也是变量,用var_dump检测为object类型;

常规函数:

function func(){
   $fun="func"
 }
 $fun();//func();

匿名函数:

$func=function($a){
 echo "我是匿名函数{$a}<br/>";
  };    //声明匿名函数函数体后面的;必不可少
 $func(10);
 var_dump($func);

例题:计算一个数的阶层:

function jiec($num){
  static $jie=1;  //函数执行完不会立即释放
  if($num>0){
    $jie*=$num;  //3
    jiec(--$num);
  }
  return $jie;
}
 echo jiec(10);

                                [递归函数]

指的是在函数内部,调用函数自身的操作;当外层函数体中,遇到自身函数调用,继续进入内层函数执行,而自身函数的后半部分暂不执行,知道最内层函数执行完以后,在逐步向外执行;

function func($num){
   echo $num."<br/>";
  if($num>0){
    func($num-1);
  //func(--$num);  试一试又不一样的结果哟!
  //func($num--);
  }
  echo $num."<br/>";
 }func(10);

                                [include/require]

   1.两者的作用就是用于引入外部的PHP文件到当前文件中:include 'a.php';include ('a.php');

   2.两者的区别:(对于错误的处理不同)当引入文件错误时,include会产生警告,并不影响后续代码的执行,而require会产生错误,后续代码不再执行;

   3.一般当用于在文件最上方导入某些文件时,使用require导入,如果失败,则不执行文件;

     如果是在某些分支条件中,导入执行某些操作,一旦报错不影响执行结果。

   4.include_once和require_once表示:文件只能导入一次,如果多次调用函数,则后面的文件会判断文件是否导入,再决定是否导入新文件。

     (检测文件是否导入时只关心文件是否已经导入,并不关心使用何种方式导入的。)

   5.include/require可以导入各种类型的文件,相当于在当前文件copy了一份,但是copy过程中,PHP引擎会进行适当的编译,确保不会出错。

   6.include和require是函数也是指令!PHP对于很多常用函数,会提供执行的写法,eg:函数写法echo("111");指令写echo "111";

以上所述是小编给大家介绍的PHP中的函数声明与使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
一个php作的文本留言本的例子(一)
Oct 09 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 PHP
php使用session二维数组实例
Nov 06 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
php中的buffer缓冲区用法分析
May 31 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 #PHP
Yii2实现ActiveForm ajax提交
May 26 #PHP
Yii2选项卡的简单使用
May 26 #PHP
PHP编程获取各个时间段具体时间的方法
May 26 #PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 #PHP
PHP判断密码强度的方法详解
May 26 #PHP
thinkphp实现附件上传功能
May 26 #PHP
You might like
PHP中的cookie
2006/11/26 PHP
PHP 面向对象 final类与final方法
2010/05/05 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
JS 对象介绍
2010/01/20 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
Python argparse模块使用方法解析
2020/02/20 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
工程建设实施方案
2014/03/14 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书