在PHP中计算(设置)数组之间的差异?

时间:2011-09-22 05:39:33

标签: php arrays

我将在我的php网站上实现ACL(访问控制列表)。

在我的系统中,用户有角色和权限的总和。

主要算法如下:

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[]

3 个答案:

答案 0 :(得分:2)

听起来像是array_diff的完美用例:

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

答案 1 :(得分: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 )

答案 2 :(得分:0)

如果我正确了解情况,您可以使用array_diff()函数轻松完成此操作。看看这里:http://www.php.net/manual/en/function.array-diff.php

这将需要2个数组并返回数组1中的所有元素,而不是数组2中的所有元素。