PHP中的命名关联数组(Laravel)

时间:2017-06-02 08:24:59

标签: php arrays laravel

我目前面临以下问题:

使用laravel我想动态创建和播种我的权限配置。我目前用以下方式硬编码(在Config/permissions.php内):

<?php
return [
 'core' => [
         'permissions' => [
             [
                 'name' => 'name',
                 'description' => 'desc',
             ],
             [
                 'name' => 'name',
                 'description' => 'desc',
             ],
         ],

 ],
];

使用laravel我可以使用"dot"表示法。正如我所做的那样,轻松访问我的配置文件:

\Config::get('permissions.core');

但是,我想动态生成上面的代码。我已尝试手动重新创建它,但我总是遇到无法命名我的第一个数组的问题,结果如下:

array(2) {
  [0]=>
  array(1) {
    ["core"]=>
    array(0) {
    }

}
  [1]=>
  array(1) {
    ["example"]=>
    array(0) {
    }
  }
}

如果我想在此阵列上使用点符号

\Config::get('permissions.core');

我收到一个未定义的索引错误。我的具体问题是,如何重新创建“硬编码”&#39;阵列?如何为我的第一个数组命名(&#39;核心&#39;),这样我就可以获得“硬编码”#39;导致?

谢谢你的提前。

1 个答案:

答案 0 :(得分:0)

好吧我现在觉得很蠢。我问了这个问题,因为我正撞击桌子(不是字面意思),忘记了基本数组是如何工作的。我希望在发帖时获得新的见解。所需要的只是:

        $config = \Config::get('permissions');
        $modules = //retrieve modules
        foreach($modules as $module){
            $config[$module->getSlug()] = array();
        }
        \Config::set('permissions', $config);

结果是:

array(2) {
  ["core"]=>
  //the part below is from another method
  array(4) {
    [0]=>
    string(9) "permission_1"
    [1]=>
    string(10) "permission_2"
    [2]=>
    string(10) "permission_3"
    [3]=>
    string(11) "permission_4"
  }
  ["module"]=>
  array(0) {
  }
}