2011-09-22 68 views
2

我將在我的php網站上實現ACL(訪問控制列表)。在PHP中計算(設置)數組之間的區別?

在我的系統用戶有總和角色和權限。

主要算法如下。

permissions = (permissions_by_role + permission_for_user) - user_banned_permission 

所以我有三個數組,我從數據庫中獲取值。

在第一部分我用這個

$permissions = array_unique(array_merge($permission_by_role, $permission_by_user)); 

所以我的問題是,如何從許可數組中刪除我的禁止權限。 現在我有這兩個數組。

$permissions and $permission_banned_for_user[] 

在此先感謝您。

回答

2

聽起來像一個完美的用例爲array_diff

$permissions = array_diff($permissions, $permission_banned_for_user); 
0

你需要的是array_diff() - 比較array1和array2並返回差異。

$allowed = array('view', 'create', 'edit', 'delete', 'add'); 
$banned  = array('add', 'delete'); 
$result = array_diff($allowed, $banned); 
print_r($result); //Array ([0] => view [1] => create [2] => edit)