最简自定义函数需用function关键字+合法函数名+空括号+花括号,如function say_hello(){echo "hello, world!";},调用前必须已定义,且函数名须符合变量命名规则、不与内置函数重名。

PHP 自定义函数不是“教程式操作”,而是按需声明、即时调用的语法行为——只要写对 function 关键字和括号结构,函数就存在了。
怎么写一个最简自定义函数
核心是 function 关键字 + 函数名 + 圆括号 + 花括号。函数名必须符合变量命名规则(字母/下划线开头,只含字母、数字、下划线),且不能与内置函数重名(如 echo、count)。
示例:
function say_hello() {
echo "Hello, world!";
}
调用时直接写 say_hello(); 即可。注意:函数定义必须在调用之前(除非在类中或使用自动加载机制)。
立即学习“PHP免费学习笔记(深入)”;
带参数和返回值的函数怎么写
参数列表写在圆括号内,多个参数用逗号分隔;用 return 语句提前结束并返回值。不写 return 或只写 return;,函数默认返回 NULL。
- 参数可以设默认值,比如
function greet($name = "Guest") { ... },调用时可省略该参数 - PHP 7+ 支持类型声明,如
function add(int $a, int $b): int { return $a + $b; },传入非整型会报TypeError - 可变参数用
...(PHP 5.6+),例如function sum(...$numbers) { return array_sum($numbers); }
为什么函数调用时报 “undefined function” 错误
这是最常见问题,本质是 PHP 解析器根本没看到函数定义。原因通常有:
- 函数定义在
require/include的文件里,但该文件没被加载,或路径错误导致加载失败 - 函数写在条件块里(如
if (false) { function foo() {} }),实际未执行定义语句 - 函数名拼写错误,或大小写不一致(Linux 环境下
MyFunc和myfunc是不同函数) - 函数定义在匿名函数或闭包内部,外部不可见
调试建议:用 function_exists('your_function_name') 检查是否已注册,比靠报错更直接。
函数作用域和变量访问要注意什么
PHP 函数有独立作用域,无法直接读写外部变量(包括全局变量)。想用全局变量,必须显式声明 global $var; 或通过 $GLOBALS['var'] 访问。
- 局部变量在函数退出后自动销毁,不保留状态
- 需要保持状态可用
static声明静态变量,比如计数器:function counter() { static $i = 0; return ++$i; } - 闭包可通过
use继承外部变量,但默认是值传递;加&可引用传递
别依赖“变量自动提升”,PHP 不会像 JavaScript 那样做变量提升(hoisting)——函数必须先定义,再调用。











