← PHP输出二选一:echo和print到底选哪个? 没有下一篇了 →

PHP变量:内存里的数据容器

原创 2026-05-08 PHP 已有人查阅

编程说白了就是处理数据。用户输入的信息、数据库查出来的记录、计算过程中的中间结果,都得找个地方存起来。这个“地方”就是变量

PHP是动态类型语言(dynamically typed language),这点跟Java、C#不一样。你不需要提前声明变量是什么类型,PHP会根据你赋的值自动推断。写起来省事,但也要心里有数——类型会随赋值变化。

一、PHP变量能存哪些数据类型?

类型 示例 说明
整数(Integer) 10, -5, 1000 不带小数点的整数
浮点数(Float) 14.99, -0.5 decimal数值
字符串(String) "代码号教程" 文本数据,引号包起来
布尔(Boolean) true / false 条件判断专用
数组(Array) ["PHP", "JS", "Python"] 多个值放一个变量里
对象(Object) new User() 类的实例,包含属性和方法

二、变量命名规则(记牢这4条)

PHP变量必须以$符号开头,后面跟变量名。

硬性规则:

  1. 变量名第一个字符必须是字母或下划线_(不能是数字)

  2. 后面可以跟字母、数字、下划线

  3. 区分大小写 —— $code$Code$CODE是三个不同的变量

  4. 用等号=赋值

<?php
// 合法写法
$name = "代码号";
$_count = 10;
$user_age = 25;
$var2 = "test";

// 下面这些是错的
// $123abc = "不行";   // 数字开头,报错
// $user-name = "不行"; // 连字符,报错
// $user name = "不行"; // 空格,报错
?>

命名风格建议(非强制,但推荐):

  • 驼峰式(camelCase)$myVariableName —— 首字母小写,后续单词首字母大写

  • 下划线式(snake_case)$my_variable_name —— 全小写,单词间下划线

代码号习惯用驼峰,看个人喜好,团队统一就行。

三、代码号示例:六种变量类型逐个看

示例1:字符串变量

<?php
$greeting = "代码号欢迎你";
echo $greeting;
?>

输出:

代码号欢迎你

示例2:整数变量

<?php
$studyDays = 30;
echo "已经学习PHP " . $studyDays . " 天";
?>

输出:

已经学习PHP 30 天

示例3:浮点数变量

<?php
$coursePrice = 199.99;
echo "课程价格:¥" . $coursePrice;
?>

输出:

课程价格:¥199.99

示例4:布尔变量

<?php
$isCompleted = true;

if ($isCompleted) {
    echo "课程已学完";
} else {
    echo "课程还在进行中";
}
?>

输出:

课程已学完

项目开发中布尔变量经常配合表单提交、登录状态、开关设置来用。

示例5:数组变量

<?php
$lessons = array("变量", "循环", "函数", "数组");
echo "当前学习章节:" . $lessons[0];
?>

输出:

当前学习章节:变量

数组索引从0开始,新手容易在这踩坑。

示例6:对象变量

<?php
class User {
    public $name = "代码号学员";
}

$student = new User();
echo $student->name;
?>

输出:

代码号学员

对象变量用得少?不,现在PHP框架里到处都是对象。

四、变量的作用域(Scope)

作用域决定了变量在哪能访问到,在哪访问不到。四个层级需要了解。

全局变量 vs 局部变量

<?php
$globalMsg = "我是全局变量";

function testScope() {
    $localMsg = "我是局部变量";
    echo $localMsg;      // 可以访问
    // echo $globalMsg;  // 不行!函数里访问不到全局变量
}

testScope();
echo $globalMsg;         // 可以访问
// echo $localMsg;       // 不行!函数外访问不到局部变量
?>

关键点:函数内部默认访问不到全局变量。想访问怎么办?用$GLOBALS数组。

<?php
$globalMsg = "全局内容";

function testGlobal() {
    // 两种方式访问全局变量
    echo $GLOBALS['globalMsg'];   // 方式一
    global $globalMsg;             // 方式二
    echo $globalMsg;
}
?>

静态变量(static)

普通变量在函数执行完就销毁了。静态变量不同——函数调用结束后保留值。

<?php
function codeCount() {
    static $count = 0;
    $count++;
    echo "第 {$count} 次调用<br>";
}

codeCount();  // 第1次调用
codeCount();  // 第2次调用
codeCount();  // 第3次调用
?>

输出:

第1次调用
第2次调用
第3次调用

代码号经验:静态变量适合做计数器、缓存简单数据。但别滥用——并发请求下静态变量在不同用户之间不隔离,容易出问题。

参数作用域

函数的参数本质上是局部变量,只在函数内部有效。

<?php
function sayHello($name) {  // $name是参数
    echo "你好," . $name;
}

sayHello("代码号学员");
// echo $name;  // 报错,函数外访问不到$name
?>

五、变量变量(Variable Variables)

这个语法比较特别。用两个$$——第一个$解析变量值,把值作为新变量名。

<?php
$course = "PHP";
$$course = "代码号教程";   // 等同于 $PHP = "代码号教程"

echo $course;     // 输出:PHP
echo $$course;    // 输出:代码号教程
echo $PHP;        // 输出:代码号教程
?>

说实话,实际项目里变量变量用得极少。可读性差,容易把人绕晕。知道有这么个东西就行,不建议主动用。

六、变量在Web开发中的实际用途

PHP变量不是纸上谈兵,实际干的事包括:

1. 接收用户输入

表单提交的内容、URL参数,都得存到变量里再处理。

2. 做算术运算

价格计算、数据统计,变量存数字然后加减乘除。

3. 动态生成页面内容

登录前后显示不同菜单、根据用户偏好展示不同内容——靠变量控制。

4. 追踪应用状态

用户登录状态、购物车商品、浏览历史,用变量存储跟踪。

5. 组织和操作数据

数组、对象把零散数据组织起来方便处理。

七、本节课程知识要点

知识点 说明
$符号 所有变量必须以$开头
动态类型 不需要提前声明类型,PHP自动推断
区分大小写 $var$Var是不同变量
命名规则 字母或下划线开头,后面可跟字母数字下划线
作用域 全局、局部、静态、参数四种
$GLOBALS 函数内访问全局变量的桥梁
static 函数调用间保留值的变量
$$变量变量 语法存在,日常不用
← PHP输出二选一:echo和print到底选哪个? 没有下一篇了 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号