Dans PHP, array_fill_keys () est une fonction très utile qui crée un nouveau tableau et remplit le nom de clé spécifié avec la même valeur. La syntaxe de cette fonction est la suivante:
array_fill_keys(array $keys, mixed $value): array
$ touches : un tableau contenant des noms de clés.
$ Value : la valeur spécifiée pour chaque nom de clé.
Supposons que nous ayons un exemple simple:
$keys = ['a', 'b', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);
La sortie sera:
Array
(
[a] => 1
[b] => 1
[c] => 1
)
Cet exemple est simple. array_fill_keys () crée un nouveau tableau basé sur les noms de clés fournis A , B , C et la valeur spécifiée 1 .
Cependant, le problème est que lorsque le tableau des touches $ transmis à array_fill_keys () contient des noms de clés en double, la fonction ignore ces noms de clés en double et ne conserve que la dernière paire de valeurs de clé qui apparaît.
Par exemple, regardez le code suivant:
$keys = ['a', 'b', 'a', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);
Vous pourriez vous attendre à ce que le résultat contienne en double une clé, mais en fait, il ressemblerait à ceci:
Array
(
[a] => 1
[b] => 1
[c] => 1
)
Dans cet exemple, le nom de clé A est transmis à plusieurs reprises dans array_fill_keys () , mais le résultat du tableau ne conserve qu'une seule clé A et sa valeur est 1 . Ce comportement est dû au fait que les noms de clés du tableau sont uniques en PHP, donc les noms de clés répétés sont ignorés, ne laissant que la dernière clé qui apparaît.
Ce comportement peut s'expliquer par la mise en œuvre interne des tableaux PHP. En PHP, les noms clés du tableau sont uniques. Lorsque Array_Fill_keys () crée un nouveau tableau, il lie en fait chaque nom de clé à la valeur spécifiée, et s'il existe des noms de clés en double, il ne conserve que la dernière occurrence du nom de la clé. Il s'agit d'éviter les clés en double dans le tableau, car le tableau de PHP ne permet pas aux mêmes noms de clés d'apparaître deux fois.
Si vous souhaitez éviter ce problème et assurez-vous qu'il n'y a pas de noms de touches en double dans les clés $ transmises à array_fill_keys () , vous pouvez d'abord utiliser array_unique () pour supprimer les noms de clés en double:
$keys = ['a', 'b', 'a', 'c'];
$value = 1;
$uniqueKeys = array_unique($keys);
$result = array_fill_keys($uniqueKeys, $value);
print_r($result);
La sortie sera:
Array
(
[a] => 1
[b] => 1
[c] => 1
)
De cette façon, nous nous assurons que seuls les noms de clés uniques sont utilisés pour remplir le nouveau tableau.
array_fill_keys () est une fonction très pratique, mais si le tableau de nom de clé passé contient des noms de clés en double, il ignore la pièce en double et conserve uniquement la dernière paire de valeurs de clé qui apparaît. Ce comportement fait partie de la conception du tableau PHP, qui garantit l'unicité du nom clé du tableau. Si vous devez faire face au problème des noms de clés en double, vous pouvez supprimer les clés en double via array_unique () pour vous assurer que chaque nom de clé est unique.
J'espère que cet article vous aidera à mieux comprendre la fonction array_fill_keys () et son comportement lors de la rencontre de noms de clés en double. Si vous avez d'autres questions, vous pouvez poser des questions à tout moment!