2011-09-22 4 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) 
0

가 제대로 당신이 array_diff() 함수를 사용하여 쉽게이 작업을 수행 할 수 있습니다. 여기를보십시오 : http://www.php.net/manual/en/function.array-diff.php

이것은 2 개의 배열을 취하여 배열 1에 있고 배열 2에없는 모든 원소를 반환합니다.

관련 문제