首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义数组php的替代方案

问定义数组php的替代方案
EN

Stack Overflow用户
提问于 2013-10-18 07:45:00
回答 5查看 18.2K关注 0票数 8

我正在寻找用于define('name', array)的替代方法,因为使用定义中的数组会给出以下错误:

常量只能计算为标量值。

我提到的数组只包含字符串。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-18 07:52:25

从php.net..。

常数的值;只允许标量和空值。标量值是整数、浮点、字符串或布尔值。可以定义资源常量,但不建议使用,而且可能会导致不可预测的行为。

但是你可以用一些技巧:

代码语言:javascript
复制
define('names', serialize(array('John', 'James' ...)));

&在使用时,必须使用un序列化()常量值(名称)。这并不是很有用,所以只需定义多个常量即可:

代码语言:javascript
复制
define('NAME1', 'John');
define('NAME2', 'James');
..

然后印成这样:

代码语言:javascript
复制
echo constant('NAME'.$digit);
票数 21
EN

Stack Overflow用户

发布于 2017-06-11 19:50:18

在新版本的PHP中,这种情况已经改变,如PHP手册中说明了。

从PHP5.6开始,可以将常量定义为标量表达式,也可以定义数组常量。

票数 7
EN

Stack Overflow用户

发布于 2019-04-23 20:07:30

如果您使用的是php5.6,并且您知道这个版本继续使用php,那么会将作为常量来支持数组。但你仍然收到以下警告..。

代码语言:javascript
复制
Warning: Constants may only evaluate to scalar values

那你就走运了。这是因为使用define()定义数组常量的方法仍未在此版本中引入,而仅在phpv7.xx中引入。

因此,您可以使用const关键字。

代码语言:javascript
复制
const MY_SUPER_CONSTANT = array(
    'cool_key'      => 'Cool Value',
    'ultra_fab_key' => 'Fabulous Value',
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19444264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档