En développement, nous devons souvent construire dynamiquement des structures de données en fonction des champs transmis par le frontal, par exemple lors du traitement des données du formulaire, de l'exportation des champs ou de la configuration dynamique de l'interface pour renvoyer le contenu. La fonction Array_Fill_keys de PHP peut être utilisée pour initialiser efficacement une structure de tableau contenant des champs spécifiques.
Cet article utilisera un exemple pratique pour expliquer comment construire rapidement un modèle de données réutilisable avec array_fill_keys en combinaison avec la liste de champs transmis par le front-end.
array_fill_keys est une fonction utilisée dans PHP pour créer un tableau, qui accepte deux paramètres:
array_fill_keys(array $keys, mixed $value): array
$ touches : le tableau à utiliser comme clés.
$ Value : la valeur par défaut correspondant à toutes les clés.
La beauté de cette fonction est qu'elle peut rapidement générer un tableau avec une structure unifiée sans boucle manuelle.
Supposons que le frontal passe un tableau de champs, notre tâche consiste à générer un modèle de tableau contenant la valeur par défaut (telle que NULL ) en fonction de ces champs. Ce modèle peut être utilisé pour remplir les données, vérifier les champs, construire des structures de réponse, etc.
<?php
// Supposons que ce soit la passe frontalePOSTListe des champs à venir
$inputFields = $_POST['fields'] ?? ['id', 'name', 'email'];
// utiliser array_fill_keys Créer une valeur par défaut comme null Structure de
$dataTemplate = array_fill_keys($inputFields, null);
// Vous pouvez maintenant construire des données en fonction de cette structure,Par exemple, remplissez les données de l'utilisateur interrogées dans la base de données:
$userFromDb = [
'id' => 101,
'name' => 'Alice',
'email' => 'alice@example.com',
'created_at' => '2024-04-01'
];
// Utilisez des modèles pour filtrer uniquement les champs requis
$filteredUser = array_intersect_key($userFromDb, $dataTemplate);
// Remplissez les champs manquants(Si aucun champ n'est transmis dans la base de données)
$finalUserData = array_merge($dataTemplate, $filteredUser);
print_r($finalUserData);
?>
Array
(
[id] => 101
[name] => Alice
[email] => alice@example.com
)
Parfois, le frontal peut également envoyer un ensemble de champs pour générer des paramètres de liaison, comme si vous souhaitez construire une adresse de saut:
$fields = $_GET['fields'] ?? ['uid', 'token'];
$params = array_fill_keys($fields, '');
// Remplissez les paramètres réels(Par exemple, desessionObtenez-le dans ou dans la logique des affaires)
$params['uid'] = 888;
$params['token'] = 'abc123';
// structureURL
$queryString = http_build_query($params);
$url = "https://m66.net/api/user_info?" . $queryString;
echo $url;
// Sortir:https://m66.net/api/user_info?uid=888&token=abc123
L'utilisation de Array_Fill_keys nous permet de construire élégamment et efficacement une structure de données unifiée basée sur des champs entrants frontaux. Non seulement il simplifie la logique du code, mais il améliore également la flexibilité et la maintenabilité du code. Son rôle est encore plus indispensable lorsqu'il est associé à des fonctions de tableau telles que array_merge et array_intersect_key .
Applicable à:
Créer un modèle de données
Filtrage de champ dynamique
Initialisation du paramètre
Opérations d'attribution par lots, etc.
Faites bon usage de cette fonction pour rendre votre code PHP plus concis et plus puissant.