包含数组的PHP常量?

包含数组的PHP常量?

这失败了:

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

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

define('DEFAULT_ROLES', 'guy|development team');//...$default = explode('|', DEFAULT_ROLES);

这似乎是不必要的努力。


慕斯709654
浏览 495回答 3
3回答

慕田峪9158850

注意:虽然这是公认的答案,但值得注意的是,在PHP 5.6+中你可以拥有const数组 - 请参阅下面的Andrea Faulds的回答。您还可以序列化您的数组,然后将其放入常量:# define constant, serialize arraydefine ("FRUITS", serialize (array ("apple", "cherry", "banana")));# use it$my_fruits = unserialize (FRUITS);

慕容3067478

从PHP 5.6开始,您可以声明一个数组常量const:<?phpconst&nbsp;DEFAULT_ROLES&nbsp;=&nbsp;array('guy',&nbsp;'development&nbsp;team');正如您所期望的那样,短语法也有效:<?phpconst&nbsp;DEFAULT_ROLES&nbsp;=&nbsp;['guy',&nbsp;'development&nbsp;team'];如果你有PHP 7,你可以最终使用define(),就像你第一次尝试一样:<?phpdefine('DEFAULT_ROLES',&nbsp;array('guy',&nbsp;'development&nbsp;team'));

慕尼黑的夜晚无繁华

您可以将它们存储为类的静态变量:class&nbsp;Constants&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;$array&nbsp;=&nbsp;array('guy',&nbsp;'development&nbsp;team');}#&nbsp;Warning:&nbsp;array&nbsp;can&nbsp;be&nbsp;changed&nbsp;lateron,&nbsp;so&nbsp;this&nbsp;is&nbsp;not&nbsp;a&nbsp;real&nbsp;constant&nbsp;value:Constants::$array[]&nbsp;=&nbsp;'newValue';如果您不喜欢其他人可以更改阵列的想法,那么getter可能有所帮助:class&nbsp;Constants&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;$array&nbsp;=&nbsp;array('guy',&nbsp;'development&nbsp;team'); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;function&nbsp;getArray()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self::$array; &nbsp;&nbsp;&nbsp;&nbsp;}}$constantArray&nbsp;=&nbsp;Constants::getArray();编辑从PHP5.4开始,甚至可以访问数组值而无需中间变量,即以下工作:$x&nbsp;=&nbsp;Constants::getArray()['index'];
打开App,查看更多内容
随时随地看视频慕课网APP