En développement, nous devons souvent définir des valeurs par défaut unifiées pour un ensemble de noms de clés, en particulier dans les scénarios où le cache, l'initialisation de configuration ou la normalisation des données sont effectués. La fonction Array_Fill_Keys () de PHP peut résoudre ce problème très élégamment, nous aidant à réduire le code redondant, à améliorer la lisibilité du code et l'efficacité de l'exécution.
Cet article utilisera la valeur par défaut de la structure du cache comme exemple pour expliquer comment utiliser array_fill_keys () pour atteindre cet objectif.
array_fill_keys () est une fonction de tableau fournie par PHP pour remplir les touches spécifiées dans le tableau avec la valeur spécifiée.
Définition de la fonction:
array array_fill_keys(array $keys, mixed $value)
$ touches : un tableau contenant tous les noms de clés.
$ Value : la valeur par défaut à affecter à chaque touche.
Exemple:
$keys = ['user_1', 'user_2', 'user_3'];
$defaultValue = null;
$cache = array_fill_keys($keys, $defaultValue);
print_r($cache);
Sortir:
Array
(
[user_1] =>
[user_2] =>
[user_3] =>
)
Imaginez un scénario typique: vous construisez une structure de cache système où vous devez intégrer les données en cache en fonction de l'ID utilisateur à un tableau prédéfini, par exemple:
$defaultCacheValue = [
'profile' => null,
'settings' => [],
'last_login' => null,
];
Vous avez plusieurs ID utilisateur:
$userIds = [101, 102, 103, 104];
Si vous initialisez ces structures manuellement, elle deviendra longue et difficile à maintenir. Utilisez array_fill_keys () pour le faire facilement:
$keys = array_map(function ($id) {
return "user_cache_$id";
}, $userIds);
$cacheStructure = array_fill_keys($keys, $defaultCacheValue);
print_r($cacheStructure);
Résultat de sortie:
Array
(
[user_cache_101] => Array
(
[profile] =>
[settings] => Array
(
)
[last_login] =>
)
[user_cache_102] => Array
(
[profile] =>
[settings] => Array
(
)
[last_login] =>
)
...
)
Si votre ID utilisateur est obtenu à partir de la base de données ou de l'API, vous pouvez également utiliser Array_Column () et d'autres fonctions pour le gérer dynamiquement:
// Supposer de API Renvoie la structure suivante
$userData = [
['id' => 201, 'name' => 'Alice'],
['id' => 202, 'name' => 'Bob'],
['id' => 203, 'name' => 'Charlie'],
];
$userIds = array_column($userData, 'id');
$keys = array_map(function ($id) {
return "user_cache_$id";
}, $userIds);
$defaultCache = [
'profile_url' => 'https://m66.net/user/default',
'status' => 'offline',
'messages' => [],
];
$cache = array_fill_keys($keys, $defaultCache);
print_r($cache);
Remarque pour les structures immuables : si vous modifiez la valeur par défaut du rembourrage, cela affectera toutes les clés car le tableau fait référence à la même structure. Si vous voulez que chaque clé ait une structure indépendante, vous devez la copier manuellement:
$cache = [];
foreach ($keys as $key) {
$cache[$key] = $defaultCache; // si defaultCache C'est l'objet,Une copie profonde est requise
}
Il est plus puissant à utiliser avec array_map : la combinaison de Array_map , Array_Column , Array_Combine et d'autres fonctions peuvent écrire une logique de traitement des données très concise et flexible.
array_fill_keys () est une fonction très pratique en PHP, particulièrement adapté aux structures de remplissage par lots pendant la phase d'initialisation. Que vous effectuiez l'initialisation du cache, la normalisation des données ou les préréglages de configuration, l'utilisation correcte de cette fonction peut rendre votre code plus soigné et élégant.