定义数组php的替代方法

定义数组php的替代方法,php,arrays,constants,global,scalar,Php,Arrays,Constants,Global,Scalar,我正在寻找define('name',array)的替代方法,因为在define中使用数组会导致以下错误: 常数的计算结果只能是 我提到的数组只包含字符串。Define只用于定义常量;国家: 常数的值;只允许使用标量值和空值。标量值是整数、浮点、字符串或布尔值。可以定义资源常量,但不建议这样做,可能会导致不可预测的行为 这就是数组不能工作的原因 这样,对于一组常量,可以考虑构建包含这些常量的类,并可以根据数组类型调用返回它们:< P>从php.net…< /p> 常数的值;只有标量值和空值是可用

我正在寻找
define('name',array)
的替代方法,因为在define中使用数组会导致以下错误:

常数的计算结果只能是


我提到的数组只包含字符串。

Define只用于定义常量;国家:

常数的值;只允许使用标量值和空值。标量值是整数、浮点、字符串或布尔值。可以定义资源常量,但不建议这样做,可能会导致不可预测的行为

这就是数组不能工作的原因

这样,对于一组常量,可以考虑构建包含这些常量的类,并可以根据数组类型调用返回它们:

< P>从php.net…< /p> 常数的值;只有标量值和空值是可用的 允许。标量值是整数、浮点、字符串或布尔值。 可以定义资源常量,但不能 建议使用,并可能导致不可预测的行为

但是你可以用一些技巧:

define('names', serialize(array('John', 'James' ...)));
&使用时必须使用unserialize()常量值(名称)。这并不是很有用&因此只需定义多个常量即可:

define('NAME1', 'John');
define('NAME2', 'James');
..
然后像这样打印:

echo constant('NAME'.$digit);

这一点在较新版本的PHP中有所改变,如下所示:

从PHP5.6开始,可以将常量定义为标量表达式,也可以定义数组常量


如果您使用的是
php5.6
,并且您知道这个版本以后的php支持数组作为常量。但您仍然会收到以下警告

Warning: Constants may only evaluate to scalar values
那你就走运了。这是因为使用
define()

因此,您可以使用
const
关键字

const MY_SUPER_CONSTANT = array(
    'cool_key'      => 'Cool Value',
    'ultra_fab_key' => 'Fabulous Value',
);

您可以使用
json\u encode
函数将数组编码为json字符串,并将其定义为常量,以便在可以访问该常量的任何位置使用

例如:

// Define the array

$MyArray = array(
    "mykey"  => "myvalue",
    "mykey1" => "myvalue1"
);
define('MYARRAY', json_encode($MyArray));

// Decode the constant and use.
$UseMyArray = json_decode(MYARRAY);

array
是什么?必须是
常数的值;只允许使用标量值和空值。标量值是整数、浮点、字符串或布尔值。
这种方法值得使用。你为什么要这么做?定义是全局符号,通常用于配置之类的东西。有更好的方法,比如依赖注入。这对我来说很好。谢谢