2016-05-07 51 views
0

我一直在寻找答案,但不能找到一个,所以这是我的情况。我有以下阵列:PHP多维数组验证

$pages = array(
    'page-one'=>range(1,9), 
    'page-two'=>range(1,3), 
    'page-three'=>range(5,9) 
); 

而且我想,以验证用户的访问权限,根据他的角色ID的页面,所以,让我们说约翰(角色ID = 2)要访问的页面二。那么,我如何验证该页面是否存在,以及他是否拥有有效的角色。

我试着像...

foreach ($pages as $page=>$roles) { 
    if (given-page==$page) { 
     // Then validate role id 
     if (in_array(given-role,$roles)) { 
     include('the-page'); 
     } else { 
     include('403-page'); 
     } 
    } else { 
     include('404-page'); 
    } 
} 

但是它总是显示404-page.How我可以验证这两个变量(页和角色ID)与阵列结构?

感谢, 卡洛斯

+0

检查您的给定页面变量。在循环启动中回应它。 'foreach($ pages as $ page => $ roles){echo“{given-page} == $
”; /*...*/' –

回答

0
$pages = array(
    'page-one'=>range(1,9), 
    'page-two'=>range(1,3), 
    'page-three'=>range(5,9) 
); 
$givenpage = "page-one"; 
$givenrole = 2; 

if(isset($pages[$givenpage])) { 
    if(in_array($givenrole, $pages[$givenpage])) { 
     include $givenpage; 
    } 
    else { 
     include "403-page"; 
    } 
} 
else { 
    include "404-page"; 
} 
+0

很好的解决方案。坦克! –

-1

我想我找到了解决办法。它可以像...

if (!isset($pages[given-page])) { 
    include(404-page); 
} else if (isset($pages[given-page]) && in_array(given-role,$pages[given-page])) { 
    include(given-page); 
} else { 
    include(403-page); 
} 

不过,如果你认为有更好的方法,请分享它。

谢谢!