包含数组的PHP常量?这失败了: define('DEFAULT_ROLES', array('guy', 'development team'));显然,常量不能保存数组。解决这个问题的最佳方法是什么?define('DEFAULT_ROLES', 'guy|development team');//...$default = explode('|', DEFAULT_ROLES);这似乎是不必要的努力。
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
注意:虽然这是公认的答案,但值得注意的是,在PHP 5.6+中你可以拥有const数组 - 请参阅下面的Andrea Faulds的回答。
您还可以序列化您的数组,然后将其放入常量:
# define constant, serialize arraydefine ("FRUITS", serialize (array ("apple", "cherry", "banana")));# use it$my_fruits = unserialize (FRUITS);
慕容3067478
TA贡献1773条经验 获得超3个赞
从PHP 5.6开始,您可以声明一个数组常量const
:
<?phpconst DEFAULT_ROLES = array('guy', 'development team');
正如您所期望的那样,短语法也有效:
<?phpconst DEFAULT_ROLES = ['guy', 'development team'];
如果你有PHP 7,你可以最终使用define()
,就像你第一次尝试一样:
<?phpdefine('DEFAULT_ROLES', array('guy', 'development team'));
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
您可以将它们存储为类的静态变量:
class Constants { public static $array = array('guy', 'development team');}# Warning: array can be changed lateron, so this is not a real constant value:Constants::$array[] = 'newValue';
如果您不喜欢其他人可以更改阵列的想法,那么getter可能有所帮助:
class Constants { private static $array = array('guy', 'development team'); public static function getArray() { return self::$array; }}$constantArray = Constants::getArray();
编辑
从PHP5.4开始,甚至可以访问数组值而无需中间变量,即以下工作:
$x = Constants::getArray()['index'];
- 3 回答
- 0 关注
- 494 浏览
添加回答
举报
0/150
提交
取消