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() 如果尝试赋予不存在的变量名,会在运行时给出提示。

相关推荐
游戏开发爱好者83 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20353 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥3 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓3 小时前
[JDBC]元数据
android
独行soc4 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能4 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿4 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc4 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20355 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106325 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview