替代定义数组php

Ano*_*iem 6 php arrays scalar global constants

我正在寻找替代方案,define('name', array)因为在define中使用数组会给我这个错误:

常量可能只评估标量值...

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

Jen*_*ohn 17

来自php.net ...

常数的值; 只允许标量和空值.标量值是整数,浮点数,字符串或布尔值.可以定义资源常量,但不建议这样做,并且可能导致不可预测的行为.

但你可以做一些技巧:

define('names', serialize(array('John', 'James' ...)));
Run Code Online (Sandbox Code Playgroud)

&使用时必须使用unserialize()常量值(名称).这不是那么有用,所以只需定义多个常量:

define('NAME1', 'John');
define('NAME2', 'James');
..
Run Code Online (Sandbox Code Playgroud)

并打印如下:

echo constant('NAME'.$digit);
Run Code Online (Sandbox Code Playgroud)

  • 现在使用序列化和反序列化,谢谢. (2认同)

hut*_*tch 7

这在PHP的较新版本中已经发生了变化,如PHP手册中所述

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