变量与常量 #
一、变量 #
1.1 变量定义 #
PHP变量以 $ 符号开头,后跟变量名:
php
<?php
$name = "PHP";
$version = 8.2;
$isPopular = true;
$price = 99.99;
1.2 变量命名规则 #
- 以
$开头 - 第二个字符必须是字母或下划线
- 后续字符可以是字母、数字或下划线
- 区分大小写
php
<?php
$validName = "正确";
$_valid_name = "正确";
$ValidName123 = "正确";
$123invalid = "错误";
$invalid-name = "错误";
$invalid.name = "错误";
1.3 命名规范 #
小驼峰命名(推荐):
php
<?php
$firstName = "John";
$lastName = "Doe";
$userAge = 25;
$totalPrice = 199.99;
蛇形命名:
php
<?php
$first_name = "John";
$last_name = "Doe";
$user_age = 25;
1.4 可变变量 #
变量名可以动态设置:
php
<?php
$var = "hello";
$$var = "world";
echo $hello;
echo $$var;
1.5 变量赋值 #
直接赋值:
php
<?php
$a = 10;
$b = "hello";
引用赋值:
php
<?php
$a = 10;
$b = &$a;
$a = 20;
echo $b;
链式赋值:
php
<?php
$a = $b = $c = 0;
二、变量作用域 #
2.1 局部变量 #
在函数内部定义的变量,只在函数内有效:
php
<?php
function test() {
$local = "局部变量";
echo $local;
}
test();
2.2 全局变量 #
在函数外部定义的变量,函数内需要使用 global 关键字访问:
php
<?php
$global = "全局变量";
function test() {
global $global;
echo $global;
}
test();
使用 $GLOBALS 数组:
php
<?php
$global = "全局变量";
function test() {
echo $GLOBALS['global'];
}
test();
2.3 静态变量 #
使用 static 关键字,变量值在函数调用间保持:
php
<?php
function counter() {
static $count = 0;
$count++;
echo $count . "\n";
}
counter();
counter();
counter();
2.4 超全局变量 #
PHP预定义的超全局变量,在任何地方都可访问:
| 变量 | 说明 |
|---|---|
| $GLOBALS | 全局变量数组 |
| $_SERVER | 服务器信息 |
| $_GET | GET请求参数 |
| $_POST | POST请求参数 |
| $_REQUEST | GET + POST + COOKIE |
| $_SESSION | 会话变量 |
| $_COOKIE | Cookie变量 |
| $_FILES | 上传文件信息 |
| $_ENV | 环境变量 |
php
<?php
echo $_SERVER['PHP_SELF'];
echo $_SERVER['HTTP_HOST'];
echo $_SERVER['REQUEST_METHOD'];
三、常量 #
3.1 使用 define() 定义 #
php
<?php
define("SITE_NAME", "我的网站");
define("MAX_SIZE", 100);
define("IS_DEBUG", true);
echo SITE_NAME;
echo MAX_SIZE;
define() 可以在运行时定义,支持表达式:
php
<?php
define("VERSION", "1.0." . date('Y'));
define("CONFIG", [
'host' => 'localhost',
'port' => 3306
]);
3.2 使用 const 关键字 #
php
<?php
const PI = 3.14159;
const MAX_USERS = 100;
echo PI;
echo MAX_USERS;
const 在编译时定义,不能使用表达式:
php
<?php
const VERSION = "1.0";
const TIME = time();
3.3 类常量 #
php
<?php
class User
{
const STATUS_ACTIVE = 1;
const STATUS_INACTIVE = 0;
const DEFAULT_ROLE = 'user';
public function isActive(): bool
{
return $this->status === self::STATUS_ACTIVE;
}
}
echo User::STATUS_ACTIVE;
echo User::DEFAULT_ROLE;
PHP 8.3+ 支持类型化类常量:
php
<?php
class Config
{
const string APP_NAME = "MyApp";
const int MAX_ITEMS = 100;
const array DEFAULTS = ['theme' => 'light'];
}
3.4 define vs const #
| 特性 | define() | const |
|---|---|---|
| 定义时机 | 运行时 | 编译时 |
| 条件定义 | 支持 | 不支持 |
| 表达式 | 支持 | 不支持 |
| 类常量 | 不支持 | 支持 |
| 命名空间 | 需要完整路径 | 自动使用当前命名空间 |
php
<?php
if (true) {
define("CONST_A", 1);
const CONST_B = 2;
}
3.5 常量命名规范 #
常量名使用大写字母和下划线:
php
<?php
define("MAX_FILE_SIZE", 1048576);
define("DB_HOST", "localhost");
const APP_VERSION = "2.0.0";
const DEFAULT_PAGE_SIZE = 20;
四、预定义常量 #
4.1 内核预定义常量 #
php
<?php
echo PHP_VERSION;
echo PHP_OS;
echo PHP_INT_MAX;
echo PHP_FLOAT_MAX;
echo PHP_EOL;
echo DIRECTORY_SEPARATOR;
4.2 魔术常量 #
php
<?php
echo __LINE__;
echo __FILE__;
echo __DIR__;
echo __FUNCTION__;
echo __CLASS__;
echo __METHOD__;
echo __NAMESPACE__;
echo __TRAIT__;
五、变量相关函数 #
5.1 检测变量 #
php
<?php
$name = "PHP";
if (isset($name)) {
echo "变量已设置";
}
if (!isset($age)) {
echo "变量未设置";
}
5.2 判断是否为空 #
php
<?php
$var = "";
$var2 = 0;
$var3 = null;
$var4 = [];
$var5 = "0";
if (empty($var)) {
echo "变量为空";
}
以下值被认为是空:
""(空字符串)0(整数0)"0"(字符串0)nullfalse[](空数组)
5.3 销毁变量 #
php
<?php
$var = "value";
unset($var);
if (!isset($var)) {
echo "变量已销毁";
}
5.4 检测常量 #
php
<?php
define("APP_NAME", "MyApp");
if (defined("APP_NAME")) {
echo APP_NAME;
}
echo constant("APP_NAME");
六、变量类型判断 #
php
<?php
$var = 42;
echo gettype($var);
if (is_int($var)) {
echo "是整数";
}
if (is_string($var)) {
echo "是字符串";
}
常用类型检测函数:
| 函数 | 说明 |
|---|---|
| is_int() | 是否为整数 |
| is_float() | 是否为浮点数 |
| is_string() | 是否为字符串 |
| is_bool() | 是否为布尔值 |
| is_array() | 是否为数组 |
| is_object() | 是否为对象 |
| is_null() | 是否为null |
| is_numeric() | 是否为数字或数字字符串 |
| is_scalar() | 是否为标量类型 |
| is_callable() | 是否为可调用结构 |
七、总结 #
本章学习了:
- 变量的定义和命名规则
- 变量作用域:局部、全局、静态
- 超全局变量的使用
- 常量的定义:define() 和 const
- 预定义常量和魔术常量
- 变量相关函数
下一章将学习PHP的基本数据类型。
最后更新:2026-03-26