当前位置: 首页 > article >正文

PHP常量

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

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

PHP常量的特性

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

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

<?php

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

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

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

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

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

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

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

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

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

<?php

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

function Test() {
    echo GOOD;
}

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

结果图:

使用 const 关键字

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

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

<?php

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

echo message[2]; // 输出 "我是无极"
?>
<?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() 如果尝试赋予不存在的变量名,会在运行时给出提示。


http://www.kler.cn/a/379972.html

相关文章:

  • MySQL的约束和三大范式
  • 【广度优先搜索】——岛屿数量
  • Nature文章《deep learning》文章翻译
  • 《Java 实现希尔排序:原理剖析与代码详解》
  • Rust 力扣 - 2461. 长度为 K 子数组中的最大和
  • 深度学习笔记之BERT(一)BERT的基本认识
  • Unity 生命周期的事件顺序
  • 32.Redis高级数据结构HyperLogLog
  • [数组排序] 0912. 排序数组
  • 使用python与Flask对pdf格式文件进行删改
  • 【新手入门软件测试--该如何分辨前后端问题及如何定位日志--前后端问题分辨与日志定位查询问题】
  • 论文笔记(五十四)pi0: A Vision-Language-Action Flow Model for General Robot Control
  • 使用MongoDB Atlas构建无服务器数据库
  • 金和OA-C6 ApproveRemindSetExec.aspx XXE漏洞复现(CNVD-2024-40568)
  • WordCloudStudio:AI生成模版为您的文字云创意赋能 !
  • 【大数据学习 | kafka】简述kafka的消费者consumer
  • excel的宏1
  • AI信息速递 20241105
  • 如何在BSV区块链上实现可验证AI
  • 基于ant组件库挑选框组件-封装滚动刷新的分页挑选框
  • [C++]使用cpphttplib的http服务上传和下载
  • golang运行某个类下所有的基准测试
  • 得物多模态大模型在重复商品识别上的应用和架构演进
  • Django ORM详解: model转字典的几种方法
  • 1.3 初探OpenCV贡献库
  • c++中string底层实现之SSO