W3docs

La puissance de PHP : comprendre la fonction array_fill_keys

Apprenez array_fill_keys() en PHP : construisez un tableau associatif à partir d'une liste de clés et d'une valeur partagée, avec des exemples sur les doublons et les clés numériques.

array_fill_keys() est une fonction PHP intégrée qui construit un nouveau tableau associatif à partir d'une liste de clés et d'une valeur unique partagée par toutes les entrées. C'est le moyen le plus rapide de pré-initialiser un tableau lorsque vous connaissez déjà les clés dont vous avez besoin, mais que vous souhaitez qu'elles démarrent toutes avec la même valeur par défaut — par exemple initialiser un ensemble de compteurs à zéro, marquer une liste d'éléments comme false, ou créer des emplacements fictifs à remplir ultérieurement.

Cette page explique ce que fait array_fill_keys(), son comportement exact avec les clés en double et les clés numériques, ses différences avec array_fill() et array_combine(), et dans quels cas l'utiliser.

Syntaxe

array_fill_keys(array $keys, mixed $value): array
ParamètreDescription
$keysUn array de valeurs à utiliser comme clés du nouveau tableau. Chaque entrée est utilisée comme clé, et non comme valeur.
$valueLa valeur à assigner à chaque clé. Peut être de n'importe quel type — un scalaire, null, un array ou un object.

Valeur de retour : un nouveau tableau dont les clés proviennent de $keys et dont les valeurs sont toutes égales à $value. Disponible depuis PHP 5.2.0.

Les clés suivent les règles normales des clés de tableau PHP : seuls les entiers et les chaînes sont valides. Une chaîne qui ressemble à un entier décimal (comme "5") est convertie en l'entier 5, et les clés true/false/null deviennent respectivement 1/0/"".

Exemple de base

Passez les clés en premier argument et la valeur de remplissage partagée en second :

php— editable, runs on the server

Le résultat est un tableau associatif utilisant vos clés, chacune associée à la même valeur :

Array
(
    [a] => value
    [b] => value
    [c] => value
)

C'est pratique lorsque vous disposez d'un ensemble de clés mais que les valeurs n'ont pas encore d'importance ou doivent toutes démarrer de la même façon — un cas courant est l'initialisation de compteurs à 0 :

<?php

$letters = array("a", "b", "c");
$counts = array_fill_keys($letters, 0);
$counts["a"]++;
$counts["a"]++;
$counts["c"]++;
print_r($counts);

?>
Array
(
    [a] => 2
    [b] => 0
    [c] => 1
)

Utiliser null, des tableaux ou des objets comme valeur

La valeur de remplissage peut être de n'importe quel type. Utilisez null pour créer des emplacements fictifs à renseigner ultérieurement :

<?php

$keys = array("id", "status");
$filled = array_fill_keys($keys, null);
print_r($filled);

?>
Array
(
    [id] =>
    [status] =>
)

Lorsque la valeur est un array ou un object, elle est copiée par valeur dans chaque clé, de sorte que la modification d'une entrée n'affecte jamais les autres :

<?php

$buckets = array_fill_keys(array("a", "b"), array());
$buckets["a"][] = 1;
print_r($buckets);

?>
Array
(
    [a] => Array
        (
            [0] => 1
        )

    [b] => Array
        (
        )

)

Clés en double et clés numériques

Étant donné que le résultat est un vrai tableau PHP, les clés obéissent aux règles normales des clés de tableau. Les clés en double fusionnent en une seule entrée, et les clés sous forme de chaîne décimale deviennent des entiers :

<?php

print_r(array_fill_keys(array("5", 5, "name"), null));

?>
Array
(
    [5] =>
    [name] =>
)

Ici "5" et 5 sont tous deux stockés comme la clé entière 5, il ne reste donc qu'une seule entrée 5. Gardez cela à l'esprit si votre liste de clés peut contenir des doublons — le tableau sera plus court que l'entrée.

array_fill_keys() par rapport aux fonctions connexes

  • array_fill() remplit une plage de clés entières séquentielles à partir d'un décalage donné, plutôt qu'à partir d'une liste de clés explicite. Utilisez-la lorsque vous voulez des index de style 0, 1, 2, ….
  • array_combine() associe un tableau de clés à un tableau de valeurs de même longueur, donnant à chaque clé une valeur différente. Utilisez array_fill_keys() lorsque toutes les valeurs sont identiques.
  • array_keys() fait l'inverse : elle extrait les clés d'un tableau existant.

Un modèle courant consiste à initialiser des valeurs par défaut avec array_fill_keys() puis à fusionner les données réelles par-dessus :

<?php

$defaults = array_fill_keys(array("name", "email", "active"), null);
$input = array("name" => "Ann", "active" => true);
print_r(array_merge($defaults, $input));

?>
Array
(
    [name] => Ann
    [email] =>
    [active] => 1
)

Cela garantit que chaque clé attendue est présente même lorsque les données entrantes sont partielles.

Résumé

array_fill_keys() transforme une liste de clés et une valeur partagée en un tableau associatif prêt à l'emploi. Faites-y appel pour initialiser des compteurs, des indicateurs ou des enregistrements fictifs en une seule ligne. N'oubliez pas que la valeur de remplissage est copiée dans chaque clé, et que les clés en double ou les clés sous forme de chaîne décimale fusionnent selon les règles standard des tableaux PHP. Pour des valeurs différentes par clé, utilisez array_combine() ; pour des index entiers séquentiels, utilisez array_fill(). Consultez le guide des tableaux PHP pour une vue d'ensemble.

Pratique

Pratique
Quel est le rôle de la fonction array_fill_keys() en PHP ?
Quel est le rôle de la fonction array_fill_keys() en PHP ?
Was this page helpful?