PHP函数知识

php 函数知识

1、函数是介绍

在PHP中,函数是一段可重复使用的代码块,用于执行特定的任务。函数封装了一系列的代码,可以接收参数、执行特定的操作,并返回一个值(可选)。函数的主要目的是提高代码的可维护性和可重用性。

函数可以通过函数名进行调用,并可以传递参数给函数。函数可以执行各种操作,例如计算、数据处理、输出、数据库操作等。通过将一系列操作封装在函数中,可以使代码更加模块化和可读性更高。

在文件头部定义declare(strict_types=1) 为严格模式,这样会对函数参数类型进行严格约束。

declare(strict_types=1);

function  函数名称(类型 参数1,类型 参数2 …):返回值类型 {
	//逻辑代码
	return 返回值; //如需函数有返回值时使用,否则函数返回值为null
}

它是函数在程序代码中的识别名称,函数名可以是以字母或下划线开头后跟零个或多个字母、下划线和数字的任何字符串。函数名不区分大小写。

function myFunc(){}

MYFUNC();
myfeunc();
MyFunC()vardump(function_exists('myFunc'));  //判断函数是否存在

2、参数传递

按值传递参数

在PHP中,函数默认按值传递参数。这意味着函数在接收参数时会创建它们的副本,并在函数内部使用这些副本进行操作,而不会直接修改原始参数的值。

按址传递参数(用“&”符号实现)

在PHP中,函数默认是按值传递参数的,但你可以使用引用(&)来实现按引用传递参数,也称为按地址传递参数。

按引用传递参数允许函数直接访问和修改原始变量的值,而不是创建副本。这意味着在函数内部对参数的修改将影响到原始变量。

$number = 5;
function increment(int $num):void {
    $num = $num + 1;
    echo "函数内Number: " . $num . "\n";
}


echo "原Number: " . $number . "\n";
increment($number);
echo "传参后Number: " . $number . "\n";

//原Number: 5 函数内Number: 6 传参后Number: 5



$number = 5;
function increment(int &$num):void {
    $num = $num + 1;
    echo "函数内Number: " . $num . "\n";
}

echo "原Number: " . $number . "\n";
increment($number);
echo "传参后Number: " . $number . "\n";


//原Number: 5 函数内Number: 6 传参后Number: 6

点语法

当传递的参数数量确定时,可以使用…与变量名。函数的所有参数会成为变量的数组元素。

参数默认值

php 支持函数的默认方式调用。如果在调用函数时没有指定参数的值,在函数中会使用参数的默认值。 默认参数必须列在所有没有默认值参数的后面。

function sum(...$args)
{
    return array_sum($args);
}
echo sum(1, 2, 3);



function say(string $name="张飞"):void{

    echo $name;
    
}

say("马云"); //马云
say();// 张飞

返回值类型

  • int:整数类型

  • float:浮点数类型

  • bool:布尔类型

  • string:字符串类型

  • null:表示无返回值或返回空值

  • array:数组类型

  • object:对象类型

  • callable:可调用类型,包括函数、方法和闭包

  • iterable:可遍历类型,包括数组和实现了Traversable接口的对象

  • 类名:指定返回值类型为特定的类或其子类

  • 接口名:指定返回值类型为特定的接口或其实现类

  • 通过使用typedef关键字创建的自定义类型

  • void:表示函数没有返回值。

  • mixed:表示函数可以返回任意类型的值。

3、变量范围

局部变量

在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中才能加以使用。如果其它程序局部需要调用使用该变量值时,必须透过「return」指令,来将其传回至主程序区块以作后续处理。

局部变量的作用域仅限于其声明的作用域内部。一旦超出作用域范围,局部变量将不再可用,并且在内存中被释放。这使得局部变量在控制程序的状态和封装数据时非常有用。

function myFunction():void {
    $name = 'John'; // 声明一个局部变量
    echo $name;
}

myFunction(); // 输出:John
echo $name; // 错误,无法访问函数内的局部变量

全局变量

在函数范围之外声明的变量为全局变量,在函数无法直接使用全局变量,函数要使用全局变量,必须要利用 global 引入或 $GLOBALS 超全局数组引入。

注意的是,全局变量的使用应该谨慎,因为它们可以在程序的任何地方被修改,而不受局部作用域的限制。在大型程序中滥用全局变量可能导致代码的可读性和维护性下降。为了避免全局变量的滥用,可以使用面向对象编程的原则,封装数据并通过方法访问和操作数据。

$name = 'John'; // 声明一个全局变量

function myFunction() {
    global $name; // 使用 global 关键字引用全局变量
    echo $name;
}

myFunction(); // 输出:John

静态变量

PHP 支持声明函数变量为静态的(static)。一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化。要声明函数变量为静态的用关键字 static。通常,静态变量的第一次使用时赋予一个初始值。

注意的是,静态变量的生命周期会持续到程序执行结束,除非显式重置或重新赋值。此外,静态变量可以在类之间共享信息,可以用于记录全局状态或跟踪某些计数器等。然而,滥用静态变量可能会导致代码的可读性和维护性下降,因此应该谨慎使用。

function myFunction() {
    static $count = 0;  // 声明一个静态变量
    $count++;
    echo $count;
}

myFunction(); // 输出:1
myFunction(); // 输出:2
myFunction(); // 输出:3

变量函数

在PHP中,变量函数是一种特殊的功能,允许将函数名存储在变量中并使用该变量调用函数。这种灵活性使得可以根据运行时的条件动态地选择要调用的函数。

function greet() {
    echo "Hello, World!";
}
$funcName = "greet"; // 将函数名存储在变量中
$funcName(); // 使用变量函数调用函数,输出:Hello, World!


//例子二

function add($a, $b) {
    return $a + $b;
}

function subtract($a, $b) {
    return $a - $b;
}

function multiply($a, $b) {
    return $a * $b;
}

function divide($a, $b) {
    if ($b != 0) {
        return $a / $b;
    } else {
        return "分母不能为零!";
    }
}

$operator = "multiply"; // 根据需要设置运算符

$a = 10;
$b = 5;

switch ($operator) {
    case "add":
        $result = add($a, $b);
        break;
    case "subtract":
        $result = subtract($a, $b);
        break;
    case "multiply":
        $result = multiply($a, $b);
        break;
    case "divide":
        $result = divide($a, $b);
        break;
    default:
        $result = "无效运算";
        break;
}

echo "结果是: " . $result;

递归函数

递归函数是一种在函数内部调用自身的函数。通过递归,函数可以重复执行相同的操作,直到满足特定的条件为止。在编程中,递归函数通常用于解决可以被分解为相同问题的子问题的情况。注意:使用时必须设置跳出递归的条件,不然就呵呵….

function factorial($n) {
    if ($n === 0 || $n === 1) {
        return 1;
    } else {
        return $n * factorial($n - 1);
    }
}

$result = factorial(5); // 计算 5 的阶乘
echo $result; // 输出:120
  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码炼金术

何以解忧,唯有打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值