php变量以$开头、动态类型、赋值即声明,未初始化读取触发notice;区分大小写;支持引用赋值与可变变量;对象7+默认句柄拷贝;作用域依函数/类而非花括号。

PHP 变量不需要提前声明类型,但必须以 $ 开头,且首次赋值即完成“声明”——没赋值就用会报 Notice: Undefined variable。
变量名必须以 $ 开头,后面跟字母或下划线
PHP 不支持省略 $(比如写 name = "abc" 是语法错误)。变量名区分大小写,$Name 和 $name 是两个变量。
-
$user_name✅ 合法 -
$123abc❌ 不能以数字开头 -
$my-var❌ 连字符不是合法标识符字符(会被解析成减法) -
$$dynamic✅ 是可变变量,但属于高级用法,日常避免嵌套滥用
赋值即声明,未初始化直接读取会触发 Notice
PHP 是动态类型语言,变量在第一次被赋值时才存在。不赋值就 echo 或参与运算,会触发 Notice: Undefined variable,但不会中断执行(默认错误报告级别下)。
$count = 0; echo $count; // ✅ 输出 0 echo $total; // ❌ Notice: Undefined variable: total $total += 5; // ❌ 同样报 Notice,且结果为 int(5) —— PHP 会隐式初始化为 0 再加,但这个行为不可靠
- 推荐显式初始化:
$total = 0;或$items = []; - 检查是否存在用
isset($var),但注意它对null返回 false;需要区分“未定义”和“值为 null”,用array_key_exists或property_exists(对象场景)
引用赋值要加 &,否则默认是拷贝
PHP 大多数情况下传值(包括数组、对象在 PHP 7.4+ 之前),想让两个变量指向同一块内存,必须显式用引用符号。
$a = [1, 2, 3]; $b = $a; // 拷贝,$b 修改不影响 $a $c = &$a; // 引用,$c[] = 4 会让 $a 也变成 [1,2,3,4]
- 函数参数中想修改原变量,需在函数定义里写
function foo(&$param) - foreach 中想直接修改数组元素,写
foreach ($arr as &$item),完事后记得unset($item),否则可能意外影响后续逻辑 - 对象在 PHP 7+ 默认就是引用语义(本质是句柄拷贝),所以
$obj2 = $obj1修改属性会影响彼此,但重赋值$obj1 = null不影响 $obj2
最容易被忽略的是:变量作用域规则不依赖花括号,而依赖函数/类/全局上下文。在 if 或 for 里写的 $tmp = 1,出了块照样能访问——除非它在函数内。这点和 JavaScript 的 let 完全不同。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











