动态添加到 php 常量数组?



我知道从 php 5.6 开始,您可以将常量设置为数组,但是是否可以动态构建一个?

这有效:

const FIELDS = array("email","firstName");

但我想运行一个填充常量的查询:

while($row = mysqli_fetch_assoc($results)) {
const FIELDS[] = $row['field'];
}

但这行不通。我也试过:

while($row = mysqli_fetch_assoc($results)) {
$array[] = $row['field'];
}
const FIELDS = $array;

但这也行不通。有没有办法做到这一点?还是必须对数组进行硬编码才能设置为常量?

尝试使用define('FIELDS', $array);.这允许您使用变量而不是文本字符串。 以下是有关defineconst的更多信息:define(( vs const

这两种方式之间的根本区别在于 常量 在编译时定义常量,而定义在运行时定义它们 时间。

我完全承认这是对常量的不当使用,此后我将其更改为仅使用变量,但是 - 这就是我发现您可以完成它的方式:

while($row = mysqli_fetch_assoc($results)) {
$array[] = $row['field'];
}
DEFINE('FIELDS', serialize($array));
print_r(unserialize(FIELDS));

如果不首先序列化数组,我就无法让 DEFINE 方法工作(也许它在 7.0 中有所不同?这要求您在输出之前对其进行反序列化。

最新更新