PHP函数必须用function关键字定义,区分大小写且不可与内置函数同名;函数名以字母或下划线开头,支持默认参数(须置末位),return可返回值或null;作用域内变量需global/static/use显式引入;PHP7+类型声明更严格,PHP8支持联合类型,重复定义或使用保留字将报错。
PHP 创建函数必须用 function 关键字开头,函数名区分大小写,且不能与内置函数同名(比如 print、array_merge)。
最简形式是 + 函数名 + 括号 + 花括号。参数可选,返回值可选,但花括号不能省略。
my_func2 合法,2func 非法)$name = 'guest'),但带默认值的参数必须放在最后return 提前退出并返回值;无 return 或只写 return; 则返回 null
function greet($name, $greeting = 'Hello') {
return $greeting . ', ' . $name . '!';
}
echo greet('Alice'); // Hello, Alice!
PHP 函数内部无法直接访问外部变量,除非显式使用 global、static 或传参方式引入。
global $var 可读写全局变量,但容易引发维护问题,不推荐频繁使用static $count = 0 让变量在多次调用间保留值,仅初始化一次use 绑定外部变量,如 function() use ($config) { ... }
$counter = 0;
function increment() {
static $count = 0;
$count++;
return $count;
}
echo increment(); // 1
echo increment(); // 2
PHP 7+ 对函数定义更严格,尤其在类型声明和返回值声明上容易报错。
declare(strict_types=1);)后,类型不匹配会抛 Fatal error,而非静默转换function foo(): int|string),但 PHP 7.4 不支持,需留意部署环境class、function、echo),否则解析失败Fatal error: Cannot redeclare,应配合 function_exists() 检查if (!function_exists('safe_json_encode')) {
function safe_json_encode($data) {
return json_encode($data, JSON_UNESCAPED_UNICODE);
}
}
函数命名是否清晰、参数顺序是否符合直觉、是否过度依赖全局状态——这些比语法正确与否更容易影响长期协作和调试效率。