Lors du traitement des tableaux multidimensionnels en PHP, l'initialisation des structures nécessite souvent certaines compétences. array_fill_keys est une fonction très pratique lors de l'initialisation d'un tableau associatif unidimensionnel. Il nous permet de générer rapidement un tableau via un tableau de noms de clés et une valeur initiale unifiée. Cependant, lorsque nous devons initialiser un, l'applicabilité de Array_Fill_keys mérite d'être discutée.
Cet article introduira en détail les méthodes d'application et les scénarios applicables de Array_Fill_Keys dans l'initialisation multidimensionnelle du tableau et analysent ses limites.
array array_fill_keys(array $keys, mixed $value)
Cette fonction reçoit deux paramètres:
$ touches : un tableau contenant des noms de clés
$ valeur : la valeur qui doit être affectée à chaque clé
Exemple:
$keys = ['name', 'age', 'gender'];
$result = array_fill_keys($keys, null);
// Résultat de sortie
print_r($result);
/*
Array
(
[name] =>
[age] =>
[gender] =>
)
*/
Cette approche est très appropriée pour initialiser les tableaux unidimensionnels avec une structure unifiée.
Bien que Array_Fill_keys lui-même ne puisse pas générer directement des tableaux imbriqués (c'est-à-dire qu'il ne peut pas initialiser les structures multidimensionnelles), nous pouvons "déguisé" le but d'initialiser les tableaux multidimensionnels en combinant array_map ou boucles.
Supposons que nous devons initialiser une structure de configuration unifiée pour plusieurs utilisateurs:
$user_ids = [101, 102, 103];
$config_keys = ['theme', 'language', 'notifications'];
$default_config = array_fill_keys($config_keys, 'default');
$users = array_fill_keys($user_ids, []);
foreach ($users as $id => &$config) {
$config = $default_config;
}
unset($config);
print_r($users);
/*
Array
(
[101] => Array
(
[theme] => default
[language] => default
[notifications] => default
)
[102] => Array
(
[theme] => default
[language] => default
[notifications] => default
)
[103] => Array
(
[theme] => default
[language] => default
[notifications] => default
)
)
*/
$user_ids = [101, 102, 103];
$config_keys = ['theme', 'language', 'notifications'];
$default_config = array_fill_keys($config_keys, 'default');
$users = array_map(function() use ($default_config) {
return $default_config;
}, array_fill_keys($user_ids, null));
print_r($users);
Initialiser les données de configuration avec une structure cohérente
Créez rapidement une copie d'un tableau 1D ou d'une structure 2D
Formulaire de la valeur prérégure du champ
L'initialisation imbriquée n'est pas prise en charge : les structures imbriquées multicouches (telles que les tableaux de troisième niveau et le quatrième niveau) ne peuvent pas être générés directement.
Question de citation : Si la valeur d'initialisation est un tableau ou un objet sans copie profonde, plusieurs clés pointent vers la même zone de mémoire et modifier une valeur peut affecter tous les autres éléments.
Les valeurs clés ne prennent pas en charge les formats de nidification dynamique : pour les noms de clés de nidification dynamique, un traitement logique supplémentaire est requis.
Lorsque Array_Fill_Keys ne peut pas répondre aux exigences d'initialisation multidimensionnelles de tableau, les alternatives suivantes peuvent être prises en compte:
Construire des tableaux imbriqués à l'aide de fonctions récursives
Générer dynamiquement des structures imbriquées avec array_reduce
Initialisation Encapsulation logique à l'aide de classes personnalisées
Supposons que vous construisez un système d'autorisation utilisateur et que la permission de chaque utilisateur doit être initialisée dans une collection vide, vous pouvez l'écrire comme ceci: