我们可以定义一个常量
define("aconstant','avalue');
Run Code Online (Sandbox Code Playgroud)
我们不能像下面这样定义数组吗?
define("months",array("January", "February", ---);
Run Code Online (Sandbox Code Playgroud)
mas*_*tic 78
自PHP 5.6(通过nikic)以来,您可以将const用于此目的.
const months = ["January", "February"];
var_dump("January" === months[0]);
Run Code Online (Sandbox Code Playgroud)
Dej*_*vic 59
更新:这在PHP 7中是可能的(参考)
// Works as of PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // outputs "cat"
Run Code Online (Sandbox Code Playgroud)
原始答案
来自php.net ...
常数的值; 只允许标量和空值.标量值是整数,浮点数,字符串或布尔值.可以定义资源常量,但不建议这样做,并且可能导致不可预测的行为.
$months = array("January,"February",...) 会没事的.
Sim*_*Sim 29
您可以使用hack将数组放在常量中:
define('MONTHS', serialize(array('January', 'February' ...)));
Run Code Online (Sandbox Code Playgroud)
但是unserialize()在需要的时候你必须得到那个恒定的值,我想这不是那么有用.
作为替代方案,定义多个常量:
define('MONTH_1', 'January');
define('MONTH_2', 'February');
...
Run Code Online (Sandbox Code Playgroud)
并使用constant()函数查找值:
echo constant('MONTH_'.$month);
Run Code Online (Sandbox Code Playgroud)
您可以使用JSON格式将数组保存在字符串中,然后将此字符串指定为常量.
$months = array("January","February","March");
define('MONTHS', json_encode($months));
Run Code Online (Sandbox Code Playgroud)
当你想使用它时:
$months = json_decode(MONTHS);
Run Code Online (Sandbox Code Playgroud)
如果你必须有一个常量,那么如何使用一个分隔的字符串并爆炸成一个数组呢?
define("MONTHS", "January;February;March");
$months = explode(";",MONTHS);
Run Code Online (Sandbox Code Playgroud)