PHP Constants Containing Arrays?
Since PHP 5.6, you can declare an array constant with const
:
<?phpconst DEFAULT_ROLES = array('guy', 'development team');
The short syntax works too, as you'd expect:
<?phpconst DEFAULT_ROLES = ['guy', 'development team'];
If you have PHP 7, you can finally use define()
, just as you had first tried:
<?phpdefine('DEFAULT_ROLES', array('guy', 'development team'));
NOTE: while this is the accepted answer, it's worth noting that in PHP 5.6+ you can have const arrays - see Andrea Faulds' answer below.
You can also serialize your array and then put it into the constant:
# define constant, serialize arraydefine ("FRUITS", serialize (array ("apple", "cherry", "banana")));# use it$my_fruits = unserialize (FRUITS);
You can store them as static variables of a class:
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';
If you don't like the idea that the array can be changed by others, a getter might help:
class Constants { private static $array = array('guy', 'development team'); public static function getArray() { return self::$array; }}$constantArray = Constants::getArray();
EDIT
Since PHP5.4, it is even possible to access array values without the need for intermediate variables, i.e. the following works:
$x = Constants::getArray()['index'];