Position actuelle: Accueil> Derniers articles> Écrivez une fonction pour encapsuler array_fill () pour soutenir l'initialisation de la clé associative

Écrivez une fonction pour encapsuler array_fill () pour soutenir l'initialisation de la clé associative

M66 2025-06-05

Dans PHP, Array_Fill () est une fonction très pratique pour créer un tableau avec des valeurs par défaut. Cependant, une limitation de celui-ci est que l'utilisation de clés de chaîne (c'est-à-dire des tableaux associatifs) n'est pas pris en charge. Alors, que devons-nous faire si nous voulons utiliser une méthode Array_Fill () en forme pour initialiser un tableau associatif avec un nom de clé spécifié?

Cet article expliquera comment encapsuler une fonction personnalisée pour prendre en charge l'initialisation par lots des valeurs de clés associées.

1. Examen de l'utilisation de base de Array_Fill ()

Voyons d'abord comment fonctionne le standard array_fill () :

 $filled = array_fill(0, 3, 'default');
print_r($filled);

Le résultat de la sortie est:

 Array
(
    [0] => default
    [1] => default
    [2] => default
)

Vous pouvez voir qu'il ne prend en charge que les clés numériques, en remplissant le nombre spécifié d'éléments de l'indice de départ.

2. Les fonctions que nous voulons atteindre

Supposons que nous ayons un ensemble prédéfini de noms de clés, comme suit:

 $keys = ['username', 'email', 'age'];

Nous voulons les initialiser immédiatement à une valeur par défaut unifiée, telle que «n / a» , et générer la structure suivante:

 [
    'username' => 'N/A',
    'email' => 'N/A',
    'age' => 'N/A'
]

3. Fonction d'incapsulation personnalisée: array_fill_keys_custom ()

Bien que PHP ait une fonction array_fill_keys () intégrée pour atteindre cet objectif, à des fins d'enseignement, nous encapsulons nous-mêmes une version plus extensible:

 /**
 * Utilisez le tableau et la valeur des clés spécifiés,Initialiser un tableau associatif
 *
 * @param array $keys   Tableau de noms de clés à utiliser
 * @param mixed $value  Valeur par défaut pour chaque clé
 * @return array        Réseau associatif initialisé
 */
function array_fill_keys_custom(array $keys, $value): array {
    $result = [];

    foreach ($keys as $key) {
        $result[$key] = $value;
    }

    return $result;
}

Exemple d'utilisation:

 $fields = ['username', 'email', 'age'];
$defaultValue = 'N/A';

$initializedArray = array_fill_keys_custom($fields, $defaultValue);

print_r($initializedArray);

Résultat de sortie:

 Array
(
    [username] => N/A
    [email] => N/A
    [age] => N/A
)

4. Advanced: prend en charge la génération de valeurs basées sur les fonctions de rappel

Nous pouvons également étendre cette fonction pour prendre en charge la génération dynamique de différentes valeurs en fonction du nom de la clé, comme l'utilisation d'une fonction de rappel:

 function array_fill_keys_callback(array $keys, callable $callback): array {
    $result = [];

    foreach ($keys as $key) {
        $result[$key] = $callback($key);
    }

    return $result;
}

Exemple d'utilisation:

 $keys = ['token', 'session_id', 'timestamp'];

$data = array_fill_keys_callback($keys, function($key) {
    switch ($key) {
        case 'token':
            return bin2hex(random_bytes(8));
        case 'session_id':
            return uniqid('sess_', true);
        case 'timestamp':
            return date('Y-m-d H:i:s');
        default:
            return null;
    }
});

print_r($data);

Exemple de sortie (peut être différent pour chaque exécution):

 Array
(
    [token] => 9f3a8f734b23f9cd
    [session_id] => sess_6623fa3890adf3.20534250
    [timestamp] => 2025-04-20 13:52:43
)

5. Exemples de scénarios d'application

Cette encapsulation est idéale pour l'initialisation du champ de formulaire, la génération de modèles de retour de l'API ou la construction du tableau de configuration par défaut. Par exemple, lorsque vous construisez le retour par défaut de l'API REST:

 $responseTemplate = array_fill_keys_custom(['code', 'message', 'data'], null);
$responseTemplate['code'] = 200;
$responseTemplate['message'] = 'L'opération est réussie';
$responseTemplate['data'] = ['url' => 'https://m66.net/api/example'];

print_r($responseTemplate);

6. Résumé

Bien que PHP fournit des fonctions de tableau prêt à l'emploi (telles que Array_Fill_Keys () ), grâce à l'encapsulation personnalisée, nous pouvons implémenter des méthodes d'initialisation plus flexibles, en particulier lorsque vous traitez des tableaux associatifs.

Cette méthode a non seulement un code plus élégant, mais améliore également votre contrôle sur la logique de fonctionnement du tableau. Ce sera un gadget très utile dans les projets réels, en particulier lorsqu'il est nécessaire de générer de grandes quantités de données structurées dynamiquement.