Position actuelle: Accueil> Derniers articles> Combiné avec array_filter () pour implémenter rapidement le filtrage d'autorisation

Combiné avec array_filter () pour implémenter rapidement le filtrage d'autorisation

M66 2025-06-03

Dans le développement Web, la gestion de l'autorisation est une partie très importante. Habituellement, nous devons restreindre leur accès à certaines ressources en fonction des autorisations de différents utilisateurs. Dans PHP, nous pouvons utiliser la fonction Array_Filter () pour filtrer efficacement les autorisations, en particulier lorsque les données d'autorisation de l'utilisateur sont grandes, elles peuvent fournir de très bonnes performances. Cet article présentera comment implémenter rapidement la fonction de filtrage d'autorisation en combinaison avec array_filter () .

Introduction à la fonction array_filter ()

La fonction Array_Filter () de PHP est utilisée pour filtrer les éléments dans un tableau. Cette fonction accepte un tableau et une fonction de rappel. La valeur de retour de la fonction de rappel est vraie ou fausse . array_filter () décidera de conserver des éléments dans le tableau en fonction de la valeur de retour de la fonction de rappel.

La syntaxe de base est la suivante:

 array_filter(array $array, callable $callback, int $mode = 0): array
  • $ Array : Le tableau à filtrer.

  • $ rappel : une fonction de rappel pour le filtrage.

  • MODE $ : Paramètre facultatif pour déterminer la valeur transmise à la fonction de rappel. 0 est la méthode de transmission de valeur, 1 est la méthode de transmission clé.

Exemple de base: les autorisations de filtrage à l'aide d'Array_Filter ()

Supposons que nous ayons une liste d'autorisation qui enregistre les ressources auxquelles différents utilisateurs peuvent accéder, et le tableau est le suivant:

 $permissions = [
    'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
    'editor' => ['view_dashboard', 'view_reports'],
    'viewer' => ['view_dashboard'],
];

Nous voulons filtrer les ressources auxquelles ils ont la permission d'accéder en fonction des rôles utilisateur. En supposant que l'utilisateur administrateur doit avoir la permission d'accéder à toutes les ressources, les utilisateurs de l'éditeur et de la visionneuse sont soumis à certaines restrictions.

 $user_role = 'editor'; // Supposons que ce soit actuellement un rôle d'éditeur

// Filtrez des ressources avec des autorisations dans le rôle actuel
$user_permissions = $permissions[$user_role];

// Liste des ressources qui doivent être filtrées
$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];

$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions) {
    return in_array($permission, $user_permissions);
});

print_r($filtered_permissions);

Résultat de sortie:

 Array
(
    [0] => view_dashboard
    [2] => view_reports
)

Grâce à cet exemple, nous pouvons voir que la fonction array_filter () nous aide à filtrer les autorisations du rôle utilisateur actuel.

Combinaison array_filter () pour implémenter un filtrage d'autorisation complexe

Dans les projets réels, le filtrage d'autorisation peut être plus compliqué sur la base de différentes règles, telles que certaines autorisations peuvent avoir des restrictions supplémentaires. Par exemple, certaines opérations ne peuvent être effectuées que si certaines conditions sont remplies ou si certaines ressources nécessitent des combinaisons d'autorisation spécifiques.

Supposons que nous ayons les données d'autorisation suivantes:

 $permissions = [
    'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
    'editor' => ['view_dashboard', 'view_reports'],
    'viewer' => ['view_dashboard'],
];

// Rôles des utilisateurs
$user_role = 'admin';

// Restrictions d'autorisations utilisateur supplémentaires
$user_restrictions = ['edit_settings']; // admin Les rôles n'autorisent pas les paramètres d'édition

// Filtrez des ressources avec des autorisations dans le rôle actuel并应用额外的权限限制
$user_permissions = $permissions[$user_role];

$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];

$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions, $user_restrictions) {
    return in_array($permission, $user_permissions) && !in_array($permission, $user_restrictions);
});

print_r($filtered_permissions);

Résultat de sortie:

 Array
(
    [0] => view_dashboard
    [2] => view_reports
)

Dans cet exemple, nous filtrons non seulement les autorisations du rôle d'utilisateur, mais restreignions également les autorisations basées sur User_Restrictions .

résumé

Array_Filter () est une fonction très utile dans PHP, qui peut nous aider à traiter et à filtrer efficacement les tableaux. Dans la gestion de l'autorisation, la combinaison de Array_Filter () peut facilement filtrer rapidement les autorisations requises en fonction de différents rôles utilisateur et des exigences d'autorisation. Si vous avez une grande quantité de traitement des données d'autorisation dans votre projet, l'utilisation de Array_Filter () peut non seulement améliorer la lisibilité du code, mais également améliorer l'efficacité de l'exécution.