php基础之函数入门

迈不过友情╰ 2022-07-15 23:27 256阅读 0赞

函数基础

函数的定义

规范:
function 函数名($args1,$args2){
// todo
}

1.$args1 $args2都属于函数的形参,作用域为函数体内
2.函数的形参由开发者自定义,但要遵循命名规范

函数的调用

规范:
函数名(实参1,实参2);
示例:

  1. /** * 计算两个数的和 * @param $a * @param $b * @return mixed */
  2. function add($a, $b)
  3. {
  4. return $a + $b;
  5. }
  6. // 调用函数
  7. $result = add(4, 1);
  8. // 输出函数执行结果
  9. echo "<br> result = $result";

函数的执行过程

1.将函数调用时的实参数据,传递给函数的形参
2.进入函数内部,顺序执行函数体代码
3.直到函数结束,或者遇到return语句,结束函数的执行
4.返回函数调用位置,继续执行原程序

函数的参数问题

参数默认值

在定义函数时,可以给指定的形参定义默认值,这样,在调用该函数时,可以不传此值。
如果给参数的形参定义默认值的话,该形参应在放在没有默认值的形参之后,函数调用传值顺序是一对一的。

示例:

  1. function test($a, $b = 3, $c = 'abc')
  2. {
  3. echo "<br> a = $a b = $b c = $c";
  4. }
  5. test(1, 2, 'a');
  6. test(3, 6);
  7. test(5);

结果为:

  1. a = 1 b = 2 c = a
  2. a = 3 b = 6 c = abc
  3. a = 5 b = 3 c = abc

形参的传值

形参的传值,其实就是变量之间的传值
传值方式有两种,一个是值传递,一个是引用传递

  • 值传递
    示例:

    function demo1($a, $b)
    {

    1. $a = $a * $a;
    2. $b = $b * $b;
    3. return $a + $b;

    }

    $a = 2;
    $b = 3;

    echo “
    before call demo1 a = $a b = $b”;
    demo1($a, $b);
    echo “
    before call demo1 a = $a b = $b”;

结果:

  1. before call demo1 a = 2 b = 3
  2. before call demo1 a = 2 b = 3
  • 引用传递
    示例:

    function demo2($a, &$b)
    {

    1. $a = $a * $a;
    2. $b = $b * $b;
    3. return $a + $b;

    }

    $a = 2;
    $b = 3;

    echo “
    before call demo2 a = $a b = $b”;
    demo2($a, $b);
    echo “
    before call demo2 a = $a b = $b”;

结果为:

  1. before call demo2 a = 2 b = 3
  2. before call demo2 a = 2 b = 9

可以发现,b的值已经发生变化,可以认为类似于C中的传的变量地址,方法修改的话,直接修改的变量地址所表示的值。
此时,只能传定义的变量,而不能直接传值进去,否则就会报错。

函数参数的数量

当声明一个函数,但是未定义形参,但是在调用的时候,往里面传递了参数,这种情况下,也是可以获取到调用者传递的参数信息,类似于系统提供的var_dump()函数。
示例:

  1. function getArgs() {
  2. echo "<br> 参数数组为: ";
  3. $arr = func_get_args();
  4. foreach ($arr as $value) {
  5. echo $value . "\t";
  6. }
  7. echo "<br> 参数个数为: " . func_num_args();
  8. echo "<br> 第一个参数为: " . func_get_arg(0);
  9. }
  10. getArgs(1, 2, 3);

结果为:

  1. 参数数组为: 1 2 3
  2. 参数个数为: 3
  3. 第一个参数为: 1

函数的其它形式

可变函数

首先,来回顾一下可变变量。
示例:

  1. /** * 可变变量 * 一个变量的值是另外一个变量的变量名 */
  2. $a = 'abc';
  3. $abc = 123;
  4. echo "<br> result is : " . $$a;

结果:

  1. result is : 123

好,再来看一下可变函数,都在代码里了,上

  1. /** * 可变函数 * 一个函数的函数名是另外一个变量的值,当调用另外一个变量的时候加上()就可以调用次函数了 */
  2. function test2() {
  3. echo "<br> this is ke bian function";
  4. }
  5. $c = 'test2';
  6. $c();
  7. function jpg() {
  8. echo "<br> this is jpg function";
  9. }
  10. function png() {
  11. echo "<br> this is jpg function";
  12. }
  13. function gif() {
  14. echo "<br> this is jpg function";
  15. }
  16. $fileName = 'abc.png';
  17. //strrchr 获取指定字符串指定字符最后一次坐标出现后面的字符串
  18. $suf = strrchr($fileName, '.');
  19. //截取字符串
  20. $realSuf = substr($suf, 1);
  21. $realSuf();

结果:

  1. this is ke bian function
  2. this is jpg function

匿名函数

顾名思义,没有名称的函数。有两种表现形式,如下所示。

  • 将一个没有名字的函数赋值给一个变量,此时改变量就代表该匿名函数了
    示例:

    $a = function () {

    1. echo "<br> 这是匿名函数的第一种表现形式";

    };
    // 调用
    $a();

结果:

  1. 这是匿名函数的第一种表现形式
  • 讲匿名函数当实参使用,比如调用一个函数的时候,将匿名函数作为参数传递到目标函数中
    示例:

    function f1($a, $b, $c) {

    1. echo "<br> 这是匿名函数的第二种表现形式。结果为:" . $c($a, $b);

    }

    f1(2, 3, function ($m, $n) {

    1. return $m + $n;

    });

结果:

  1. 这是匿名函数的第二种表现形式。结果为:5

函数的作用域

作用域分类

作用域指一个变量可以使用的范围,php中有三种左右域。

  • 局部作用域
    指一个函数内部的范围,定义的变量只能在该函数内部使用
    这样的变量称之为局部变量
  • 超全局作用域
    指整个项目工程的范围
    对应的变量称之为超全局变量
    只有系统预设的几个,如:$_GET $_POST $_REQUEST $_SERVER $_COOKIE $_SESSION $_FILES $GLOBALS
  • 全局作用域
    不在函数内部的范围,也就是函数的外部
    对应的变量成为全局变量

通常情况下:

  1. 全局范围不能访问局部变量
  2. 局部范围不能访问全局变量
  3. 函数内部的变量在函数执行完成后就销毁掉
  4. 函数内的静态变量在函数执行完后不被销毁

局部范围访问全局变量

  • 方式一:
    示例:

    $v = 10;

    function test() {

    1. // 使用global声明一个要使用的全局变量的同名局部变量
    2. global $v;// 此处的$v是局部变量,但是和全局的$v指向同一个数据区域
    3. echo "<br> test v = $v";
    4. $v = 12;

    }

    echo “
    befor call test —-> v = $v”;
    test();
    echo “
    after call test —-> v = $v”;

结果:

  1. befor call test ---> v = 10 test v = 10 after call test ---> v = 12
  • 方式二:
    示例:

    $v1 = 18;

    function test2() {

    1. //使用超全局GLOBAL变量,根据变量名取数据
    2. echo "<br> v1 = " . $GLOBALS['v1'];
    3. $GLOBALS['v1'] = 81;

    }

    echo “
    befor call test2 —-> v1 = $v1”;
    test2();
    echo “
    after call test2 —-> v1 = $v1”;

结果:

  1. befor call test2 ---> v1 = 18 v1 = 18 after call test2 ---> v1 = 81

欧了,php函数的基础介绍就到这了~

发表评论

表情:
评论列表 (有 0 条评论,256人围观)

还没有评论,来说两句吧...

相关阅读

    相关 7天入门php-php基础

    一、php数据类型 php数据类型与JavaScript 数据类型差不多,都有声明与使用方法也相似,但php中 函数内不能使用函数外的变量。具体比较如下: JavaScri

    相关 PHP基础函数

    函数就是有一定功能的一些语句组织在一起的一种形式,定义函数的目的则是将程序按功能分块,方便程序的阅读、使用和管理。PHP的真正力量便是来自它的函数,PHP中拥有1000多个内置

    相关 PHP基础函数

    函数就是有一定功能的一些语句组织在一起的一种形式,定义函数的目的则是将程序按功能分块,方便程序的阅读、使用和管理。PHP的真正力量便是来自它的函数,PHP中拥有1000多个内置