【发布时间】:2025-12-14 19:05:02
【问题描述】:
我知道,从 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)怎么样?不过,那将需要 PHP7。但是一个常数就是——一个常数!为什么不能使用变量来代替?是在课堂上使用吗? -
常数是常数。如果它发生变化,它就是一个变量。
-
@AlexBlex 我明白了,我并不想在使用过程中使其可变,只是在创建时从远程源中提取值
-
您可以在定义 $array 之后使用 DEFINE('FIELDS', $array)... 但我严重怀疑您是否真的想要这样做,因为定义没有范围并且可能会减慢您的应用程序下来。
-
您可以尝试扩展 ArrayAccess 类来实现某种不可变数组。当然你需要的并不完全是一个不可变的数据结构,而是你希望能够在初始化后冻结数据结构。