PHP Constants Containing Arrays? PHP Constants Containing Arrays? arrays arrays

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'];