PHP - 常量



PHP 中的常量是简单值的名称或标识符。常量值在 PHP 脚本执行期间不能更改。

  • 默认情况下,PHP 常量区分大小写。
  • 按照约定,常量标识符始终为大写。
  • 常量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。
  • 无需在常量之前写美元符号 ($),但是必须在变量之前使用美元符号。

PHP 有效和无效的常量名称示例

以下是 PHP 中有效和无效常量名称的一些示例 -


// 有效的常量名称
define("ONE", 	 	 "first thing");
define("TWO2", 	 	"second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// 无效的常量名称
define("2TWO", 	 	"second thing");

PHP 中常量和变量的区别

  • 常量不能通过简单赋值来定义;它们只能使用 define() 函数定义。
  • 可以在任何位置定义和访问常量,而无需考虑变量范围规则。
  • 设置 Constants 后,它们不能被重新定义或未定义。

定义命名常量

PHP 库中的 define() 函数用于在运行时定义命名常量。


 define(string $const_name, mixed $value, bool $case = false): bool

参数

  • const_name − 常量的名称。
  • value − 常量的值。它可以是标量值(int、float、string、bool 或 null)或数组值也被接受。
  • case − 如果设置为 true,则常量将定义为不区分大小写。默认行为区分大小写,即 CONSTANT 和 Constant 表示不同的值。
define() 函数在成功时返回 “true”,在失败时返回 “false”。

示例 1

以下示例演示了 define() 函数的工作原理 -


<?php 	
	 	define("CONSTANT", "Hello world.");

	 	echo CONSTANT;	
	 	// echo Constant;	
?>

第一个 echo 语句输出 CONSTANT 的值。您将获得以下输出 -

Hello world.

但是,当您取消注释第二个 echo 语句时,它将显示以下错误 -

Fatal error: Uncaught Error: Undefined constant "Constant" in hello.php: on line 5

如果将 case 参数设置为 False,则 PHP 不会区分大小写常量。

示例 2

您也可以将数组用作常量的值。请看下面的例子 -


<?php 	
	 	define(
	 	 	 $name="LANGS",	
	 	 	 $value=array('PHP', 'Java', 'Python')
	 	);
	 	var_dump(LANGS);
?>

它将产生以下输出 -

array(3) {
[0]=>
string(3) "PHP"
[1]=>
string(4) "Java"
[2]=>
string(6) "Python"
}

使用 constant() 函数

echo 语句输出定义的常量的值。您还可以使用 constant() 函数。它返回 name 指示的常量的值。


 constant(string $name): mixed

如果你需要检索一个常量的值,但不知道它的名字,那么 constant() 函数很有用。即,它存储在变量中或由函数返回。


<?php
	 	define("MINSIZE", 50);

	 	echo MINSIZE;
	 	echo PHP_EOL;
	 	echo constant("MINSIZE");		 	// same thing as the previous line
?>

它将产生以下输出 -

50
50

使用 defined() 函数

PHP 库提供了一个 defined() 函数,用于检查是否存在给定的命名常量。请看下面的例子 -


<?php
	 	define('MAX', 100);

	 	if (defined('MAX')) {
	 	 	 echo MAX;
	 	}
?>

它将产生以下输出 -

100

PHP 还有一个叫做 “get_defined_constants()” 的函数,它返回一个包含所有已定义常量及其值的关联数组。