我知道自从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;
但这也行不通。有没有办法实现这个目标?或者数组是否必须硬编码才能设置为常量?
答案 0 :(得分:0)
尝试使用define('FIELDS', $array);
。这允许您使用变量而不是文字字符串。
关于define
与const
:define() 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中有所不同?)这要求您在输出之前对其进行反序列化。