繁体   English   中英

如何将此数组转换为fuelphp acl格式

[英]How to convert this array to fuelphp acl format

嗨,我是FuelPHP的新手。 我是一个演示使用ACL。 我已经从数据库中获取了所有角色,格式如下所示

$data = array(
  array('admin'=>array(
    'none' => array(
        'crudform' => array('create','index')
      )  
  )),
  array('admin'=>array(
    'none' => array(
        'cruddept' => array('create','view')
      )  
  )),
);

现在我想将该数组转换为

$data = array(
  'admin' => array(
    'none'=>array(
      'crudform' => array(
         'create',
         'index'
       ),
       'cruddept'=>array(
          'create',
          'view'
       )
     )
   )
)

我该怎么做?

从数据库检索数据后,您可以使用类似于此函数的数组来转换数组

function change_array($data)
{
    $result = array('admin' => array('none' => array()));
    foreach ($data as $key => $value)
        foreach ($data[$key]['admin']['none'] as $key_child => $value_child)
            $result['admin']['none'][$key_child] = $value_child;
    return $result;
}

您需要做的就是像这样使用它

$data = change_array($data);

感谢哈立德先生,您的想法为我提供了一种解决问题的方法。 我已经找到了构建数组的方法。 这是我的代码

function build_role_array($roles){
        $final = array();
        foreach($roles as $row){
            foreach($row as $role=>$value){
                if(!isset($final[$role])){
                    $final[$role] = array();
                }
                foreach($value as $module=>$area){
                    if(!isset($final[$role][$module])){
                        $final[$role][$module] = array();
                    }
                    foreach($area as $controller=>$rights){
                        $final[$role][$module][$controller] = $rights;
                    }
                }
            }
        }
        return $final;
    }

感谢你的支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM