PHP+;CodeIgniter foreach循环显示每个列表项,但如果用户有权查看此类选项,则仅显示列表标题一次
我使用的是codeigniter,在我的情况下,我有一个用户对特定链接的特定权限数组,这些链接是在我的_Controller.php中的一个变量中定义的。我还有一个在配置文件(application/config)中指定的多维链接数组。现在需要循环访问权限,将它们与链接数组进行比较,并仅打印出用户有权限访问的链接,同时根据配置文件中定义的标题对链接进行分组。我成功地循环了一遍,但问题是它在每个选项后显示标题,而不是在标题下打印一次链接列表。我检查了一个类似的问题,发现解决方法是相同的,但问题是我必须循环权限数组,这意味着我有三个嵌套循环,而不是两个。另外,在使用三个嵌套循环时是否存在性能折衷 这是预期产出 管理 工具PHP+;CodeIgniter foreach循环显示每个列表项,但如果用户有权查看此类选项,则仅显示列表标题一次,php,arrays,codeigniter,permissions,Php,Arrays,Codeigniter,Permissions,我使用的是codeigniter,在我的情况下,我有一个用户对特定链接的特定权限数组,这些链接是在我的_Controller.php中的一个变量中定义的。我还有一个在配置文件(application/config)中指定的多维链接数组。现在需要循环访问权限,将它们与链接数组进行比较,并仅打印出用户有权限访问的链接,同时根据配置文件中定义的标题对链接进行分组。我成功地循环了一遍,但问题是它在每个选项后显示标题,而不是在标题下打印一次链接列表。我检查了一个类似的问题,发现解决方法是相同的,但问题是我
Settings
Edit Settings
Settings
Edit Settings
这就是我得到的
管理
管理
管理
工具
Settings
Edit Settings
Settings
Edit Settings
工具
Settings
Edit Settings
Settings
Edit Settings
以下是配置文件:
$config['nav']['manage'] = array(
'users' => 'auth_title_users',
'users/edit' => 'auth_title_users_edit',
'reception' => 'auth_title_reception'
);
$config['nav']['tools'] = array(
'settings' => 'auth_title_settings',
'settings/edit' => 'auth_title_settings_edit'
);
下面是myheader.php(application/views/includes)中的代码
/$navs包含根据配置文件定义的链接的多维数组
$navs=$this->config->item('nav','tank_auth');
//$menu_items是包含用户从数据库获得的权限的数组
foreach($menu\u项作为$menu\u项){
$val=$菜单项;
若有($NAV){
foreach(资产净值为$k=>$v){
if(is_数组($v)){
$header_writed=FALSE;
foreach($v作为$key=>$value){
//将权限与链接进行比较
如果($val==$key){
如果(!$header\u已写入){
$section\u hr=lang('auth\u section\u'.$k);
回显“\t”。$section\u hr.\n”;
}
$list\u item=lang($auth\u title.$key);
回声“\t\n”;
回显“\t\t- ”$list\u项。“
\n”;
$header_writed=TRUE;
}
}
}
否则{
$header_writed=FALSE;
}
如果($header\u已写入){
回声“\t
\n”;
}
}
}
}
在数组中使用,而不是通过用户拥有的权限进行循环,这样可以删除最外层的foreach语句
if ( in_array($key, $menu_items) ) # instead of if($val == $key){