包含一个数组键作为同一多维数组的另一个数组值的值

时间:2018-06-29 14:48:50

标签: php arrays laravel

我正在尝试将索引的所有值作为同一数组的另一个索引的值的一部分包括在内,例如:语法错误

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中可能吗?

2 个答案:

答案 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接受答案的帮助。