php变量名必须以$开头且区分大小写,首字符须为字母或下划线,禁用数字、连字符及保留字,模糊命名会显著降低调试效率。

变量名必须以 $ 开头,否则根本不是变量
PHP 不像 JavaScript 那样能隐式声明,$ 是变量的“身份证”——漏写就直接报错:Parse error: syntax error, unexpected '='。比如写 name = "张三",PHP 会把它当普通标识符处理,语法直接崩。
- 合法:
$name、$_id、$userCount - 非法:
name(没$)、$(空名)、$$var(这是变量变量,不是命名问题)
首字符不能是数字,下划线和字母才被允许
写 $123user 看起来顺手,但 PHP 解析器会在词法分析阶段就拒绝:它把开头的数字当作数值字面量的一部分,根本不会尝试匹配变量名规则。
- 合法:
$_cache、$userId、$APIKey - 非法:
$1stAttempt、$2xSpeed、$-price(连字符也不行)
大小写敏感不是风格问题,是运行时事实
$total 和 $Total 在同一个作用域里就是两个独立变量,改错一个不会影响另一个。新手常在函数传参或数组键名里混用大小写,结果取不到值却查不出逻辑错误。
- 常见踩坑点:
$_POST['email']是小写,但代码里写了$_POST['Email']→ 返回null或触发 notice - 类属性、方法参数、foreach 变量都受此约束,比如
$item和$Item混用会导致未定义变量警告
别碰保留字,哪怕它“好像能跑”
PHP 不禁止你用 $class 或 $echo,但这些名字在 IDE 里会变灰、在静态分析工具里报 warning,更重要的是——它们和语言结构同名,会让后续维护者本能怀疑是不是写错了语法。
立即学习“PHP免费学习笔记(深入)”;
- 危险但“合法”的例子:
$function、$interface、$namespace - 真正安全的做法:查官方保留字列表(
get_defined_functions()不包含它们,得看手册),或直接用工具校验,比如 PHP_CodeSniffer 的Squiz.NamingConventions.ValidVariableName规则
$d、$tmp、$res 这类名字,在复杂嵌套或异步回调里,几秒内根本想不起它到底存的是数据库结果还是 API 响应体。











