我正在尝试将索引的所有值作为同一数组的另一个索引的值的一部分包括在内,例如:语法错误
const CONST_ARRAY = array("update" => "require" . ['c', 'd'],
"require" => ['a', 'b']);
看起来像这样:
const CONST_ARRAY = array("update" => ['a', 'b', 'c', 'd'],
"require" => ['a', 'b']);
在PHP或Laravel中可能吗?
答案 0 :(得分:1)
无法使用尚未定义的值。
您需要设置require
值,然后再使用它。例如:
$require = ['a', 'b'];
const CONST_ARRAY = array("update" => [...$require, 'c', 'd'],
"require" => $require);
如果您的PHP版本不支持...
,请使用array_merge
答案 1 :(得分:1)
这是 几乎不可能的 (除了像在pablorsk答案中那样声明外部),但是我找到了一种方法:
您将需要使用define()
,因为const
语法会为此解决方案引发错误。您还需要先声明引用的数组,然后再将其传递给array_merge()
。
工作示例:
define('CONST_ARRAY', [
"require" => ($require = ['a', 'b']),
"update" => array_merge(($arr = &$require), ['c', 'd'])
]);
// Output
echo '<pre>' . print_r(CONST_ARRAY, true) . '</pre>';
此语法不太容易使用。我尝试使用参考和传播算子(未成功)为:
"update" => [...&$require, 'c', 'd']
注意:
这可能不是现实生活中要使用的东西。此答案得到了PHP: Self-referencing array接受答案的帮助。