在 PHP 开发中,变量是最基础、最核心的存在,就像代码世界的 “小容器”,用来存储数字、文字、数组等一切数据。看似简单的$变量名,藏着声明、赋值、作用域、引用等超多关键知识点,新手易踩坑、老手易忽略,真正吃透它,才能写出规范、安全、高效的 PHP 代码。
一、PHP 变量的核心:开头必须带 $
PHP 变量最显著的特征,就是所有变量都以美元符号 $ 开头,这是 PHP 语法的硬性规则,没有例外。
1. 变量的声明与赋值
PHP 是弱类型语言,声明变量无需指定数据类型,直接赋值即可自动识别类型:php运行
<?php // 字符串变量 $name = "PHP开发者"; // 整型变量 $age = 25; // 浮点型变量 $price = 19.9; // 布尔型变量 $is_study = true; // 数组变量 $arr = ["PHP", "MySQL", "Laravel"]; ?>
无需提前声明,赋值即定义,这也是 PHP 灵活易用的关键。
2. 变量名的命名规则
变量名不是随便起的,遵守规则才能避免语法报错:
- 必须以
$开头,后跟字母(a-z、A-Z) 或 下划线(_); - 不能以数字开头;
- 可以包含字母、数字、下划线;
- 区分大小写(
$name和$Name是两个不同变量); - 建议见名知意,不使用无意义的
$a、$b。
合法示例:$user_name、$age1、$_token
非法示例:$1name、$user-name、$user@name
二、PHP 变量的关键特性:弱类型与可变变量
1. 弱类型:无需固定类型,随心赋值
弱类型是 PHP 区别于 Java、C++ 的核心特点,变量类型会随赋值自动改变:php运行
<?php $num = 10; // 整型 $num = "十"; // 自动变为字符串 $num = 10.5; // 自动变为浮点型 ?>
优势:开发效率高,无需纠结类型声明;
注意:类型自动转换可能引发逻辑错误,需谨慎处理。
2. 可变变量:变量名也能是变量
可变变量是 PHP 的特色语法,用一个变量的值作为另一个变量的名称,写法是$$变量名:php运行
<?php $str = "name"; // 等价于 $name = "PHP"; $$str = "PHP"; echo $name; // 输出:PHP echo $$str; // 输出:PHP ?>
灵活用于动态生成变量,但过度使用会降低代码可读性,需适度使用。
三、变量的作用域:在哪定义,在哪生效
变量的作用域,就是变量能被访问的代码范围,PHP 主要分 3 种作用域,也是新手最易踩坑的点。
1. 局部作用域
函数内部定义的变量,只能在函数内部使用,外部无法访问:php运行
<?php function test() { // 局部变量 $local_var = "我是局部变量"; echo $local_var; } test(); // 输出:我是局部变量 // 报错:Undefined variable $local_var // echo $local_var; ?>
2. 全局作用域
函数外部定义的变量,只能在函数外部使用,函数内部默认无法访问:php运行
<?php // 全局变量 $global_var = "我是全局变量"; function test() { // 报错:Undefined variable $global_var // echo $global_var; } test(); echo $global_var; // 输出:我是全局变量 ?>
3. 跨作用域:global 关键字与 $GLOBALS
想在函数内部使用全局变量,有两种方法:php运行
<?php $num1 = 10; $num2 = 20; function add() { // 方法1:用global声明 global $num1; // 方法2:用$GLOBALS超全局变量 $sum = $num1 + $GLOBALS['num2']; echo $sum; } add(); // 输出:30 ?>
4. 静态变量:函数执行完不消失
用static声明的静态变量,只会在第一次调用函数时初始化,函数执行完毕后不会销毁,下次调用仍保留值:php运行
<?php function countNum() { static $count = 0; $count++; echo $count . " "; } countNum(); // 1 countNum(); // 2 countNum(); // 3 ?>
常用于计数器、缓存数据等场景
参考:https://app-aar1v5j0ef41.appmiaoda.com/category/disaster-warning.html
四、变量的赋值:值赋值与引用赋值
1. 值赋值(默认)
默认赋值方式,是复制一份数据给新变量,两个变量互不影响:php运行
<?php $a = 10; // 值赋值:复制$a的值 $b = $a; $b = 20; echo $a; // 10(不受影响) echo $b; // 20 ?>
2. 引用赋值:共用一个数据
用&符号,让两个变量指向同一个数据地址,修改一个,另一个也会变:php运行
<?php $a = 10; // 引用赋值:$a和$b共用一个数据 $b = &$a; $b = 20; echo $a; // 20(同步改变) echo $b; // 20 ?>
五、变量的判断与销毁:实用操作
1. 判断变量是否存在:isset ()
检查变量是否已赋值且不为null,返回布尔值:php运行
<?php $name = "PHP"; var_dump(isset($name)); // true var_dump(isset($age)); // false ?>
2. 判断变量是否为空:empty ()
判断变量是否为空(空字符串、0、null、false、空数组都算空):php运行
<?php $num = 0; var_dump(empty($num)); // true ?>
3. 销毁变量:unset ()
释放变量占用的内存,销毁后变量不再存在:php运行
<?php $str = "测试"; unset($str); var_dump(isset($str)); // false ?>
六、新手必避的变量坑点
- 忘记写 $:直接写
name = "PHP",会报语法错误; - 大小写混淆:
$Name和$name是两个变量,易导致数据错误; - 全局变量直接用:函数内不声明
global就用全局变量,报未定义错误; - 引用赋值滥用:不经意间修改原变量,引发逻辑 bug;
- 变量名冲突:同名变量覆盖原有数据,导致结果异常。
总结
PHP 变量看似简单,却是整个 PHP 开发的基础:
- 牢记
$开头、遵守命名规则; - 理解弱类型、可变变量的灵活用法;
- 分清作用域,避免全局 / 局部变量踩坑;
- 掌握值赋值与引用赋值的区别。
吃透这些知识点,不管是入门 PHP,还是排查代码 bug,都能事半功倍,为后续学习函数、数组、框架打下坚实基础。
参考:https://app-aar1v5j0ef41.appmiaoda.com/category/weather-knowledge.html