PHP常量

·PHP 中的常量是指一旦定义后将不能被改变的标识符。

·常量可以用const和define()来定义。

PHP常量的特性

  • 不变性: 常量一旦定义,其值不能改变。
  • 全局作用域: 常量在定义后,可以在整个脚本的任何地方使用,无需使用 global 关键字。
  • 数据类型: 常量的值可以是标量数据类型(如布尔值、整数、浮点数、字符串)或数组(PHP 7 及以上版本)。
  • 区分大小写: 常量名称默认是区分大小写的。如果需要定义大小写不敏感的常量,可以在 define() 函数的第三个参数设置为 true。

· 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

php 复制代码
<?php

// 区分大小写的常量名
define("GOOD", "欢迎来到我的世界");
echo GOOD;    // 输出 "欢迎来到我的世界"

echo '<br>';
echo good;       // 区分大小写,会报红
?>

· 但是只需要在后方加上true,就不会区分大小写, PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。

php 复制代码
<?php
// 区分大小写的常量名
define("GOOD", "欢迎来到我的世界",true);

echo good;    // 输出 "欢迎来到我的世界"
echo '<br>';
?>

· 不能使用$符号,否则会获取不到常量

php 复制代码
<?php
$GOOD = "变量";
define("GOOD", "欢迎来到我的世界",);

echo $GOOD;         //输出:变量     直接使用常量不能加$符号,加了$符号就等于变成了变量了
echo '<br>';
?>

· 常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

php 复制代码
<?php

define("GOOD", "欢迎来到我的世界");

function Test() {
    echo GOOD;
}

Test();    // 输出: 欢迎来到我的世界
?>

结果图:

使用 const 关键字

php 复制代码
<?php
const table = "我来自宇宙";
echo table;                 //输出: 我来自宇宙
?>

常量也可以是数组,需要时也是能直接获取的

php 复制代码
<?php

define("message",[
    "我是超人",
    "我是李白",
    "我是无极"
]);

echo message[2]; // 输出 "我是无极"
?>
php 复制代码
<?php

const message = [

    "我是超人",
    "我是李白",
    "我是无极"

];

echo message[1];        // 输出 "我是李白"
?>

在PHP中,define() 和 const 都用于声明常量,但在使用和定义方式上有一些区别:

一、定义方式:

define(): 这是一个动态函数,允许你在运行时给常量赋值。例如:define('MY_CONSTANT', 'Hello');

const: 是静态声明的,一旦在文件中声明,就不能改变其值。例如:const MY_CONST = 'Hello';

  • 可变性:

define() 的常量可以改变(虽然这不是推荐的做法),但如果是预定义的 const 则不允许修改。

const 的安全性更高,因为它们在编译时就确定了值。

三、使用场景:

define() 更适合那些在程序运行过程中可能需要改变的值,如配置信息。

const 更适合那些在整个脚本生命周期内不变的重要常量,比如数学常数 PI 或 Pi 数字表示。

四、错误处理:

如果尝试修改已定义为 const 的值,会引发错误。

define() 如果尝试赋予不存在的变量名,会在运行时给出提示。

相关推荐
天空之城--14 小时前
Android Flutter行业动态与学习参考(2026年8月)
android·flutter
quantdash_cc15 小时前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash
杉氧16 小时前
原生交互:如何在 Flutter 中嵌入 Android/iOS 原生组件并解决手势冲突
android·flutter·dart
Android打工仔16 小时前
Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
android·kotlin
hunterandroid16 小时前
[Android 从零到一] Kotlin Channel 与复杂并发场景:从生产者-消费者到结构化并发治理
android
FlightYe17 小时前
linux系统编程(八):阻塞与非阻塞IO对比
android·linux·运维·服务器·github·vim
恋猫de小郭17 小时前
Flutter iOS Deep Link 为什么会突然失效:一系列难以言喻的问题
android·前端·flutter
qq_4228286218 小时前
android 图形学之图层数据送显(八)
android
Kapaseker18 小时前
小白都看得懂的 Skill 教程 - 初识 Skill
android·kotlin·vibecoding
神奇小梵18 小时前
安全和开发的需要了解的知识————下载内容的安全,和下载内容如何运行
android·windows·安全·个人开发