PHP变量须以$开头且区分大小写,未声明类型;unset()彻底删除变量,赋null仅清值;可变变量和动态键名易出错且不安全,应避免。

PHP 变量不需要提前声明类型,但必须以 $ 开头,否则直接报错或静默失败。
变量名必须以 $ 开头,且后面跟合法标识符
PHP 解析器靠 $ 识别变量,漏写就变成普通字符串或未定义常量。比如 name 和 $name 完全是两回事——前者可能触发 Notice: Use of undefined constant name。
- 合法:
$user_id、$is_active、$data2 - 非法:
user(没$)、$2count(数字开头)、$my-var(含短横线) - 注意大小写敏感:
$Name和$name是两个变量
unset() 和赋值为 null 的行为完全不同
这是实际调试中最容易混淆的点:变量被 unset() 后彻底从符号表移除;而设为 null 只是值变空,变量仍存在。
-
isset($x)对unset($x)后返回false,对$x = null返回true -
empty($x)两者都返回true,不能靠它区分 - 函数内用
global $x引入时,如果外部已unset($x),该global声明会创建一个新局部变量,不是你想要的“引用”
数组变量和动态变量名的常见误用
PHP 支持 ${'var_name'} 这类可变变量,但绝大多数场景下没必要,反而增加维护难度和安全隐患。
立即学习“PHP免费学习笔记(深入)”;
- 数组访问必须用方括号:
$arr['key'],写成$arr.'key'或$arr->key都错 -
${'user_'.$id}看似灵活,但容易拼错键名、难 debug,优先用数组或对象属性 - 从
$_GET或$_POST直接构造变量名(如${$_GET['var']})属于严重安全风险,禁止在生产环境使用
变量作用域、引用传递、以及超全局变量(如 $_SESSION)的生命周期,才是真实项目里最容易出问题的地方——它们不体现在“怎么定义”这一步,但定义之后立刻就会撞上。











