PHP 常量包含数组?

2022-08-30 05:53:57

此操作失败:

 define('DEFAULT_ROLES', array('guy', 'development team'));

显然,常量不能容纳数组。解决这个问题的最佳方法是什么?

define('DEFAULT_ROLES', 'guy|development team');

//...

$default = explode('|', DEFAULT_ROLES);

这似乎是不必要的努力。


答案 1

从 PHP 5.6 开始,您可以使用以下命令声明一个数组常量:const

<?php
const DEFAULT_ROLES = array('guy', 'development team');

正如您所期望的那样,短语法也有效:

<?php
const DEFAULT_ROLES = ['guy', 'development team'];

如果你有 PHP 7,你终于可以使用 ,就像你第一次尝试一样:define()

<?php
define('DEFAULT_ROLES', array('guy', 'development team'));

答案 2

注意:虽然这是公认的答案,但值得注意的是,在 PHP 5.6+ 中,你可以有 const 数组 - 请参阅下面 Andrea Faulds 的答案

还可以序列化数组,然后将其放入常量中:

# define constant, serialize array
define ("FRUITS", serialize (array ("apple", "cherry", "banana")));

# use it
$my_fruits = unserialize (FRUITS);