在PHP中通過遞歸實現多層級權限檢查可以使用以下代碼示例:
function checkPermission($permissions, $requiredPermission) {
if (in_array($requiredPermission, $permissions)) {
return true;
}
foreach ($permissions as $permission) {
if (is_array($permission) && checkPermission($permission, $requiredPermission)) {
return true;
}
}
return false;
}
$permissions = [
'admin',
'user',
[
'editor',
[
'viewer'
]
]
];
$requiredPermission = 'viewer';
if (checkPermission($permissions, $requiredPermission)) {
echo "Permission granted";
} else {
echo "Permission denied";
}
在上面的示例中,我們定義了一個checkPermission
函數來遞歸檢查權限。該函數接收兩個參數:$permissions
是一個包含權限的數組,$requiredPermission
是需要檢查的權限。函數首先檢查是否在當前權限數組中找到了所需權限,如果找到則返回true
,否則繼續遞歸檢查每個子權限數組。如果最終沒有找到所需權限,則返回false
。
通過這種方式,我們可以在多層級權限數組中進行遞歸檢查,確保用戶擁有所需的權限。