PHP - 常量数组



在 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"
}

你也可以使用传统的方括号语法在 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
)

你也可以使用 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
)