一篇文章带你理解php中的函数

发布于:2022-12-19 ⋅ 阅读:(394) ⋅ 点赞:(0)

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程,学习方法,总结的经验等等,希望能帮助到大家
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:初始你名,久居我心

​ 

今天是学习php的第四天,而今天的主要内容也是php中极其重要的一部分,那就是函数,希望大家看了这篇文章之后能对php中的函数有一个基础的了解,话不多说开启今日份学习

目录

一:PHP中的函数

1.函数的基本语法 

2.自定义函数 

3.回调函数 

4.匿名函数 

1.变量函数式的匿名函数

2.回调式的匿名函数

5.内部函数 

6. 变量作用域

1.$GLOBAL 

2.GLOBAL 

7.参数的引用 

8.递归函数 

9.静态变量 

10.系统函数 


一:PHP中的函数

1.函数的基本语法 

函数,英文名为function ,而function也有功能的含义,可以理解为函数就是功能,调用一个函数就是实现一个功能,函数的两个特点,可以随时调用,可以重复调用

对于函数,我们一般分为两大类,自定义函数系统函数

2.自定义函数 

 php提供了很多功能强大的函数,但仍然不能满足程序猿的一些需求,这时候就需要程序猿根据自己的需求来创建函数,即自定义函数,定义格式如下

function 函数名([参数名1[=值1], 参数名2[=值2], 参数名n[=值n]])

{

      // 函数中的功能体

        

    // return 返回值

}

注意:1.这里的参数其实就是变量

          2.定义的函数名并不区分大小写,这一点很多人都会忘记 

          3.函数可以多次调用,但是不能多次定义同名函数 

          4.函数名只能是字母,数字,下划线的组合 

          5.函数的参数可以设置默认值,如下:,此时就算调用时不传参也不会报错

function test( $arg = 10){

       echo $arg;

}

        6.在代码层面可以先调用,在后面再创建该函数

3.回调函数 

回调函数其实就是在一个函数的参数位置传入另外一个函数,配合第一个参数的执行,这样说着有点抽象,下面用php中文网的代码例子给你们看看

<?php

 

function woziji($one,$two,$func){

       //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false

       if(!is_callable($func)){

               return false;

       }

       //我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次

       echo $one + $two + $func($one,$two);

}

 

//我们定义几个函数试试

function plusx2( $foo , $bar){

 

       $result = ($foo+$bar)*2;

 

       return $result;

}

 

function jian( $x , $y ){

   $result = $x - $y;

 

   return $result;

}

 

//调用一下函数,woziji,向里面传入参数试试

echo woziji(20,10,'plusx2') .'<br>'; // 90

 

//将plusx2改成jian试试结果

echo woziji(20,10,'jian'); // 40

 

?>

就是调用函数时在要填入变量的位置填入函数作为变量 

注意:这里也可以自己调用自己,在递归中常用

4.匿名函数 

匿名函数就比较简单了,就是没有函数名的函数,匿名函数也有两种常用的格式,下面我们来介绍一下

1.变量函数式的匿名函数

例子如下:

<?php

$greet = function($name)

{

 echo $name.',你好';

};

$greet('明天');


?>

调用时直接用定义的greet变量加上()即可使用,也可以理解为将这个变量当做了函数名

2.回调式的匿名函数

这个就更简单,当我们编写自定义函数时,不想专门去写一个回调函数,就可以在调用回调函数的位置用匿名函数代替,如下

woziji(20,30,function( $foo , $bar){

 

               $result = ($foo+$bar)*2;

 

               return $result;

           }

);

如上,本来woziji函数的第三个参数应该是我们定义好的函数名,但是我们不想再另外定义,就可以在这里使用匿名函数 

5.内部函数 

内部函数顾名思义就是在函数内部又重新定义了一个函数,需要注意的只有两点

  • 内部函数名,不能是已存在的函数名

  • 假设在函数a里面定义了一个内部函数,不能调用两次函数a。

  • 要调用内部函数的时候要先调用外面的函数

  • 单独调用外部函数时,不会执行内部函数

6. 变量作用域

我们几天前就已经接触了变量这个概念,但是变量也有自己作用的范围,不在其范围内便无法使用该变量,比较常见的就是函数内定义的变量跟函数外没有任何关系,那如果我想在函数外调用函数内的变量,或者反过来,就没有办法了吗?

这里就要讲到我们的$GLOBALSGLOBAL了,先讲$globals,这里给出几个例子

1.$GLOBAL 

<?php
//函数内读取外部变量
 

$one = 10;

function demo(){

   $two = 100;

   $result = $two + $GLOBALS['one'];

   return $result;

}

//你会发现结果变成了110
//同理,不仅可以在函数内调用外界变量,修改或者创建外部变量也可以
//注意:创建的全局变量需要先调用函数才可以在外界使用

echo demo();

 

?>

2.GLOBAL 

再讲一下GLOBAL ,用法也很简单,就是在global的后面跟上变量名,这个变量就可以在程序的任何地方使用了,就像下面这样

  global $a , $b;

7.参数的引用 

例如$a=&$b,这是变量的引用,让他们指向同一个存储空间,此时两者变化同步,而参数的引用也是这样,将 形参和实参指向同一存储空间,两个的值此时也会同步变化

<?php

 

$foo = 100;

//注意:在$n前面加上了&符

function demo(&$n){

       $n = 10;

       return $n + $n;

}

echo  demo($foo).'<br />';

//你会发生$foo的值变为了10

echo $foo;

 

?>

大致意思就是通过&将$n指向$foo所在的存储空间,所以这里改变$n的值,$foo也会同步改变 

8.递归函数 

这里的递归函数跟前面的回调函数有异曲同工之妙,回调函数是在函数内调用其他函数,但是丢鬼函数实在函数里调用自身,即自己调用自己,下面有一个例子

<?php

 

$n = 2;

function dg( $n ){

   echo $n.'<br />';

   $n = $n - 1;

   if($n > 0){

       //在函数体内调用了dg自己哟

       dg($n);

   }else{

       echo '--------------';

   }

   echo '我是最后一个哦!' . $n . '<br />';

}

dg($n);

 

?>

这也是个很简单的东西,大致就是一个函数会根据你传入的值做不同的处理,不断调用自身并执行函数体,直到传入的值不适合在这个函数运行,就退出 ,有些代码基础的应该很容易懂,看不懂的可以下载后运行试试

9.静态变量 

静态变量主要为了解决一个问题——某个函数被调用了多少次

简单的说就是在函数里面定义一个新变量,并给他一个值,函数每次被调用,变量就会做对应的改变,比如定义了一个$a=0,函数每次调用都执行$a++,最后得到的$a的值就是函数的调用次数

10.系统函数 

上面讲的都根据我们的需求自定义功能的函数,系统函数就是系统已经定义好了,功能也固定,需要时候直接调用就可以了,由于太多了,就不一个一个讲了,这里是php中文网整理的常用系统函数 

 还是比较推荐大家去看一看

今日份php学习结束,抱歉,今天上午偶然碰到一个比较有意思的站点,测试花费了太多时间,再加上今天的内容对我来说有点难,很多地方都需要记忆和下来实践运行一下,所以这篇博客发的比较晚,但是说了日更就日更,我可能会迟到,但永远不会缺席,希望她对于我人生的道路也是这样,respect!

本文含有隐藏内容,请 开通VIP 后查看