php 函数实现
PHP 函数实现基础
在PHP中,函数是一段可重复使用的代码块,用于执行特定任务。函数可以接收参数并返回值,提高代码的模块化和可维护性。
定义函数
使用function关键字定义函数,后跟函数名和一对圆括号。函数名不区分大小写,但建议保持一致。
function greet() {
echo "Hello, World!";
}
调用函数
通过函数名后跟圆括号来调用函数。
greet(); // 输出: Hello, World!
参数传递
函数可以接收参数,参数在函数定义时声明,调用时传递具体值。
基本参数传递
function greetUser($name) {
echo "Hello, $name!";
}
greetUser("Alice"); // 输出: Hello, Alice!
默认参数值
为参数指定默认值,调用时可省略该参数。
function greetUser($name = "Guest") {
echo "Hello, $name!";
}
greetUser(); // 输出: Hello, Guest!
类型声明
PHP支持参数类型声明,确保传入的数据类型正确。
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, 3); // 输出: 8
返回值
函数通过return语句返回值,返回值可以是任意类型。
返回简单值
function square($num) {
return $num * $num;
}
echo square(4); // 输出: 16
返回数组
function getNames() {
return ["Alice", "Bob", "Charlie"];
}
print_r(getNames());
返回引用
使用&符号返回变量的引用。
function &getReference() {
static $value = 10;
return $value;
}
$ref = &getReference();
$ref++;
echo getReference(); // 输出: 11
可变函数
PHP支持可变函数,即通过变量名调用函数。
基本可变函数
function sayHello() {
echo "Hello!";
}
$func = "sayHello";
$func(); // 输出: Hello!
动态调用类方法
class Greeter {
public static function greet() {
echo "Hello from class!";
}
}
$method = "greet";
Greeter::$method(); // 输出: Hello from class!
匿名函数
匿名函数(闭包)是没有名称的函数,可以作为变量值或参数传递。
基本匿名函数
$greet = function($name) {
echo "Hello, $name!";
};
$greet("Alice"); // 输出: Hello, Alice!
闭包使用外部变量
通过use关键字引入外部变量。
$prefix = "Hello";
$greet = function($name) use ($prefix) {
echo "$prefix, $name!";
};
$greet("Bob"); // 输出: Hello, Bob!
内置函数
PHP提供了丰富的内置函数,涵盖字符串、数组、文件操作等。
字符串函数示例
$str = "Hello, World!";
echo strlen($str); // 输出: 13
echo strtoupper($str); // 输出: HELLO, WORLD!
数组函数示例
$arr = [1, 2, 3];
echo count($arr); // 输出: 3
print_r(array_reverse($arr)); // 输出: [3, 2, 1]
递归函数
递归函数调用自身,适合解决分治问题。
阶乘示例
function factorial($n) {
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
echo factorial(5); // 输出: 120
函数作用域
PHP函数内部默认不能访问外部变量,除非使用global或$GLOBALS。
全局变量访问
$globalVar = 10;
function showGlobal() {
global $globalVar;
echo $globalVar; // 输出: 10
}
showGlobal();
静态变量
静态变量在函数调用间保留值。
function countCalls() {
static $count = 0;
$count++;
echo $count;
}
countCalls(); // 输出: 1
countCalls(); // 输出: 2






