是否可以使用关联数组声明常量

时间:2017-07-07 07:23:38

标签: php arrays constants associative-array

我正在尝试使用关联数组为每个国家/地区的办公室名称声明一个常量。

我的声明代码如下:

define( "OUR_OFFICE", [
    "Japan" => "Tokyo Shibuya Office",
    "Taiwan" => "Taipei Shilin Office",
    "Korea" => "Seoul Yongsan Office",
    "Singapore" => "Singapore Novena Office",
    "Australia" => "Sydney Darlinghurst Office"
]);

但是,它只显示消息:

  

警告:常量只能评估为标量值

是否可以使用关联数组声明常量?

非常感谢!!!

2 个答案:

答案 0 :(得分:6)

您发布的代码不适用于PHP 5.

Declaring constant arrays using define是一项新功能introduced in PHP 7.0

Since PHP 5.6可以define a constant array using the const keyword

select xmlquery(
  'for $i in /FM/SectionsList/Section where $i/SectionId="Section_two"
   return
     for $j in $i/Fields/FormField where $j/FieldId="REQUESTNAME"
       return $j/FieldValue/text()'
  passing xmltype(req_details)
  returning content) as result
from your_table;

RESULT              
--------------------
JASMINE

documentation突出显示define()const之间的差异:

  

与使用const OUR_OFFICE = [ "Japan" => "Tokyo Shibuya Office", "Taiwan" => "Taipei Shilin Office", "Korea" => "Seoul Yongsan Office", "Singapore" => "Singapore Novena Office", "Australia" => "Sydney Darlinghurst Office", ]; 定义常量相反,使用define()关键字定义的常量必须在顶级范围内声明,因为它们是在编译时定义的。这意味着它们不能在函数,循环,if语句或const / try块内声明。

答案 1 :(得分:3)

在PHP 7中,也接受数组值。

但是在PHP 7之前,您可以这样做,使用define:

在其他地方传递数组
instantclient-precomp-linux.x64-12.1.0.2.0.zip