我正在寻找用于define('name', array)的替代方法,因为使用定义中的数组会给出以下错误:
常量只能计算为标量值。
我提到的数组只包含字符串。
发布于 2013-10-18 07:52:25
从php.net..。
常数的值;只允许标量和空值。标量值是整数、浮点、字符串或布尔值。可以定义资源常量,但不建议使用,而且可能会导致不可预测的行为。
但是你可以用一些技巧:
define('names', serialize(array('John', 'James' ...)));&在使用时,必须使用un序列化()常量值(名称)。这并不是很有用,所以只需定义多个常量即可:
define('NAME1', 'John');
define('NAME2', 'James');
..然后印成这样:
echo constant('NAME'.$digit);发布于 2017-06-11 19:50:18
在新版本的PHP中,这种情况已经改变,如PHP手册中说明了。
从PHP5.6开始,可以将常量定义为标量表达式,也可以定义数组常量。
发布于 2019-04-23 20:07:30
如果您使用的是php5.6,并且您知道这个版本继续使用php,那么会将作为常量来支持数组。但你仍然收到以下警告..。
Warning: Constants may only evaluate to scalar values那你就走运了。这是因为使用define()定义数组常量的方法仍未在此版本中引入,而仅在phpv7.xx中引入。
因此,您可以使用const关键字。
const MY_SUPER_CONSTANT = array(
'cool_key' => 'Cool Value',
'ultra_fab_key' => 'Fabulous Value',
);https://stackoverflow.com/questions/19444264
复制相似问题