Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;CodeIgniter foreach循环显示每个列表项,但如果用户有权查看此类选项,则仅显示列表标题一次_Php_Arrays_Codeigniter_Permissions - Fatal编程技术网

PHP+;CodeIgniter foreach循环显示每个列表项,但如果用户有权查看此类选项,则仅显示列表标题一次

PHP+;CodeIgniter foreach循环显示每个列表项,但如果用户有权查看此类选项,则仅显示列表标题一次,php,arrays,codeigniter,permissions,Php,Arrays,Codeigniter,Permissions,我使用的是codeigniter,在我的情况下,我有一个用户对特定链接的特定权限数组,这些链接是在我的_Controller.php中的一个变量中定义的。我还有一个在配置文件(application/config)中指定的多维链接数组。现在需要循环访问权限,将它们与链接数组进行比较,并仅打印出用户有权限访问的链接,同时根据配置文件中定义的标题对链接进行分组。我成功地循环了一遍,但问题是它在每个选项后显示标题,而不是在标题下打印一次链接列表。我检查了一个类似的问题,发现解决方法是相同的,但问题是我

我使用的是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){