Position actuelle: Accueil> Derniers articles> Exemples utilisés avec Array_INTERSECT_UKEY et Array_Keys

Exemples utilisés avec Array_INTERSECT_UKEY et Array_Keys

gitbox 2025-05-29

1. Fonction Introduction

array_INTERSECT_UKEY

 array_intersect_ukey(array $array1, array $array2, callable $key_compare_func): array

Cette fonction renvoie un tableau qui contient toutes les clés de $ array1 qui existent également dans $ array2 . La méthode de comparaison des clés est déterminée par key_compare_func .

array_keys

 array_keys(array $array, mixed $search_value = null, bool $strict = false): array

Array_keys renvoie toutes les clés du tableau, ou, dans le cas d'une valeur spécifiée, renvoie la clé correspondant à la valeur.


2. Analyse de cas réelle

Imaginez que lorsque nous traitons les données renvoyées par un ensemble d'API, nous devons filtrer les champs spécifiés à partir de plusieurs champs de retour pour un traitement ultérieur, tel que la journalisation ou la présentation à l'avant. Voici un scénario typique.

Exemples de données:

 $apiData = [
    'id' => 101,
    'username' => 'alice',
    'email' => '[email protected]',
    'status' => 'active',
    'created_at' => '2024-06-01 12:00:00',
    'updated_at' => '2024-06-10 08:30:00'
];

$logFields = ['id', 'username', 'email'];

Nous voulons garder uniquement le contenu avec les clés $ apidata 'id' , «nom d'utilisateur» et «e-mail» et rejeter d'autres champs.


3. Utilisez Array_Keys et Array_INTERSECT_UKEY pour réaliser le filtrage

Code d'implémentation:

 $allowedKeys = array_flip($logFields);

$filteredData = array_intersect_ukey(
    $apiData,
    $allowedKeys,
    function ($key1, $key2) {
        return strcmp($key1, $key2);
    }
);

Résultat de sortie:

 Array
(
    [id] => 101
    [username] => alice
    [email] => [email protected]
)

illustrer:

  1. array_flip ($ logFields) flips le tableau des noms de clés dont nous devons être un tableau dont le nom de clé est le nom et la valeur du champ, de sorte qu'il peut être utilisé comme objet de comparaison pour array_intersect_ukey .

  2. Utilisez STRCMP comme fonction de comparaison pour implémenter la comparaison de chaînes standard.

  3. Le résultat final est l'ensemble des champs dans lesquels la clé $ Apidata existe dans $ Logfields .


4. combiner davantage le traitement des données d'URL

Supposons que nous ayons affaire à un ensemble de données de configuration utilisateur avec URL, nous voulons conserver uniquement la partie contenant le nom de domaine URL de liste blanche.

Exemple de code:

 $userSettings = [
    'homepage' => 'https://gitbox.net/home',
    'avatar' => 'https://cdn.gitbox.net/avatar.jpg',
    'backup_site' => 'https://example.com/backup',
    'profile' => 'https://gitbox.net/user/profile'
];

$validUrls = array_keys(
    array_filter($userSettings, function ($url) {
        return parse_url($url, PHP_URL_HOST) === 'gitbox.net';
    })
);

$validKeys = array_flip($validUrls);

$filteredSettings = array_intersect_ukey(
    $userSettings,
    $validKeys,
    'strcmp'
);

print_r($filteredSettings);

Résultat de sortie:

 Array
(
    [homepage] => https://gitbox.net/home
    [profile] => https://gitbox.net/user/profile
)

Description de la logique de base:

  • Filtrez d'abord le nom de domaine principal de l'URL dans la valeur via array_filter .

  • Array_keys extrait les noms clés qui répondent aux exigences.

  • Filtrez ensuite les données via array_flip et array_intersect_ukey .

Cette méthode nous permet de préserver les clés correspondantes dans le tableau en fonction de une logique dans la valeur , effectuant ainsi un traitement de données structuré très flexible.