动态添加到php const数组?

时间:2017-08-25 23:00:00

标签: php arrays constants

我知道自从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;

但这也行不通。有没有办法实现这个目标?或者数组是否必须硬编码才能设置为常量?

2 个答案:

答案 0 :(得分:0)

尝试使用define('FIELDS', $array);。这允许您使用变量而不是文字字符串。 关于defineconstdefine() vs const

的更多信息
  

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

答案 1 :(得分:0)

我完全承认这是对常量的不当使用,而且我已经将其改为简单地使用变量,但是我知道这是我发现你可以完成它的方式:

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

在没有首先序列化数组的情况下,我无法使DEFINE方法起作用(也许它在7.0中有所不同?)这要求您在输出之前对其进行反序列化。