在 PHP 5.6 版之前,无法声明常量数组。从 PHP 5.6 开始,你可以使用 “const” 关键字来声明一个常量数组。从 PHP 7 开始,常量数组也可以用 define() 函数形成。
常量数组是形成后无法修改的数组。与普通数组不同,它的标识符不以 “$” 符号开头。
声明常量数组的旧语法是 −
const ARR = array(val1, val2, val3);
例
<?php
const FRUITS = array(
"Watermelon",
"Strawberries",
"Pomegranate",
"Blackberry",
);
var_dump(FRUITS);
?>
它将产生以下输出 -
array(4) {
[0]=>
string(10) "Watermelon"
[1]=>
string(12) "Strawberries"
[2]=>
string(11) "Pomegranate"
[3]=>
string(10) "Blackberry"
}
[0]=>
string(10) "Watermelon"
[1]=>
string(12) "Strawberries"
[2]=>
string(11) "Pomegranate"
[3]=>
string(10) "Blackberry"
}
你也可以使用传统的方括号语法在 PHP 中声明一个常量数组 -
const FRUITS = [
"Watermelon",
"Strawberries",
"Pomegranate",
"Blackberry",
];
例
无法修改常量数组中的任何元素。因此,以下代码会引发致命错误 -
<?php
const FRUITS = [
"Watermelon",
"Strawberries",
"Pomegranate",
"Blackberry",
];
FRUITS[1] = "Mango";
?>
它将产生以下输出 -
PHP Fatal error: Cannot use temporary expression in write context
常量数组 PHP 7 及更高版本
较新版本的 PHP 允许你用 define() 函数声明一个常量数组。
<?php
define ('FRUITS', [
"Watermelon",
"Strawberries",
"Pomegranate",
"Blackberry",
]);
print_r(FRUITS);
?>
它将产生以下输出 -
Array
(
[0] => Watermelon
[1] => Strawberries
[2] => Pomegranate
[3] => Blackberry
)
(
[0] => Watermelon
[1] => Strawberries
[2] => Pomegranate
[3] => Blackberry
)
你也可以使用 array() 函数在这里声明常量数组。
define ('FRUITS', array(
"Watermelon",
"Strawberries",
"Pomegranate",
"Blackberry",
));
例
也可以声明一个关联常量数组。下面是一个示例 -
<?php
define ('CAPITALS', array(
"Maharashtra" => "Mumbai",
"Telangana" => "Hyderabad",
"Gujarat" => "Gandhinagar",
"Bihar" => "Patna"
));
print_r(CAPITALS);
?>
它将产生以下输出 -
Array
(
[Maharashtra] => Mumbai
[Telangana] => Hyderabad
[Gujarat] => Gandhinagar
[Bihar] => Patna
)
(
[Maharashtra] => Mumbai
[Telangana] => Hyderabad
[Gujarat] => Gandhinagar
[Bihar] => Patna
)