PHP 入门教程
PHP 变量与常量
本教程共 65 篇 · 第 5 篇 · 更新于 2026-07-24 · 约 4 分钟阅读
PHPPHP8变量常量作用域数据存储
5. PHP 变量与常量
本节目标:掌握变量的定义、作用域和常量的使用。学完你能正确声明变量,理解数据在程序中的存储方式。
5.1 什么是变量
变量是存储数据的容器。在 PHP 中,变量以美元符号 $ 开头:
<?php
$name = "张三";
$age = 25;
$price = 19.99;
?>
变量赋值后可以随时修改:
<?php
$count = 10;
$count = 20; // 现在 $count 的值是 20
$count = $count + 5; // 现在 $count 的值是 25
?>
5.2 变量命名规则
给变量起名需要遵守以下规则:
- 必须以
$符号开头 - 必须以字母或下划线开头,不能以数字开头
- 只能包含字母、数字和下划线
- 区分大小写
<?php
$username = "正确"; // 正确
$_private = "正确"; // 正确
$age2 = "正确"; // 正确
// $2age = "错误"; // 错误!不能以数字开头
// $user-name = "错误"; // 错误!不能包含横线
// $user name = "错误"; // 错误!不能包含空格
?>
Tip变量名要有意义。
$n不如$userName清晰。推荐使用驼峰命名法($userName)或下划线命名法($user_name)。
5.3 变量作用域
变量的”可见范围”称为作用域。PHP 有四种作用域:
局部作用域
在函数内部定义的变量,只能在函数内部使用:
<?php
function sayHello() {
$message = "你好"; // 局部变量
echo $message;
}
sayHello(); // 输出"你好"
// echo $message; // 错误!函数外访问不到
?>
全局作用域
在函数外部定义的变量,默认在函数内访问不到:
<?php
$siteName = "我的网站";
function showSite() {
// echo $siteName; // 错误!函数内访问不到
global $siteName; // 用 global 声明后就能访问
echo $siteName;
}
showSite();
?>
使用 $GLOBALS 数组
<?php
$x = 10;
$y = 20;
function add() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
add();
echo $z; // 输出 30
?>
静态变量
函数执行完毕后,普通变量会被销毁。使用 static 可以让变量保留值:
<?php
function counter() {
static $count = 0;
$count++;
echo $count;
}
counter(); // 1
counter(); // 2
counter(); // 3
?>
Note静态变量仍然是局部变量,函数外部无法访问。它只是值不会被销毁。
5.4 可变变量
PHP 允许用一个变量的值作为另一个变量的名:
<?php
$a = "hello";
$$a = "world"; // 相当于 $hello = "world"
echo $hello; // 输出 world
echo $$a; // 同样输出 world
?>
Tip可变变量在动态编程中有用,但过度使用会降低代码可读性。初学者了解即可,不建议频繁使用。
5.5 常量
常量一旦定义,值就不能改变。PHP 定义常量有两种方式:
define() 函数(传统方式)
<?php
define("SITE_NAME", "我的博客");
define("MAX_SIZE", 100);
define("PI", 3.14159);
echo SITE_NAME; // 输出"我的博客"
?>
const 关键字(推荐)
<?php
const SITE_NAME = "我的博客";
const MAX_SIZE = 100;
// const 可以在类中使用,define() 不行
class Config {
const VERSION = "2.0";
}
echo Config::VERSION; // 输出 2.0
?>
Note
const在编译时定义,define()在运行时定义。PHP 8.0 起两者性能差距很小,推荐优先使用const,因为它语法更简洁且在类中可用。
5.6 常量命名规则
- 通常全部大写,单词间用下划线分隔
- 不需要
$符号 - 定义后不能修改,不能删除
<?php
const DATABASE_HOST = "localhost";
const DATABASE_PORT = 3306;
?>
5.7 预定义常量
PHP 内置了许多常用常量:
<?php
echo PHP_VERSION; // PHP 版本,如 8.5.8
echo PHP_OS; // 操作系统名称
echo PHP_INT_MAX; // 最大整数值
echo __LINE__; // 当前行号
echo __FILE__; // 当前文件路径
echo __DIR__; // 当前文件所在目录
?>
更多魔术常量将在第 17 章详细介绍。
5.8 变量与常量的选择
什么时候用变量,什么时候用常量?
| 场景 | 选择 |
|---|---|
| 运行中会改变的值 | 变量 |
| 配置项、固定参数 | 常量 |
| 需要在多处使用且不改变 | 常量 |
| 计算结果、临时数据 | 变量 |
<?php
// 常量:数据库配置,不会变
const DB_HOST = "localhost";
const DB_NAME = "mydb";
// 变量:用户输入,每次不同
$username = $_POST['username'];
$password = $_POST['password'];
?>
来源:参考了 w3cschool「PHP 变量」「PHP 常量」、runoob「PHP 变量」「PHP 常量」以及 php.net 官方文档,综合改写后所得。