Position actuelle: Accueil> Derniers articles> Pourquoi le retour résulte-t-il de Array_Fill_keys ne répond pas aux attentes?

Pourquoi le retour résulte-t-il de Array_Fill_keys ne répond pas aux attentes?

M66 2025-06-06

array_fill_keys est une fonction de tableau très utile dans PHP pour remplir un tableau basé sur la valeur de clé spécifiée. Si vous rencontrez des situations où les résultats et les attentes sont retournés lors de l'utilisation de cette fonction, ne vous inquiétez pas. J'utiliserai un exemple et une explication spécifiques pour vous aider à trouver la cause profonde du problème.

Utilisation de la fonction array_fill_keys

Tout d'abord, jetons un coup d'œil à la syntaxe de base de la fonction array_fill_keys :

 array_fill_keys(array $keys, mixed $value): array
  • $ Keys : un tableau qui doit être une clé de tableau.

  • $ Value : la valeur correspondant à chaque clé.

Cette fonction renvoie un nouveau tableau dont les clés proviennent du paramètre $ touches , et toutes les valeurs sont remplies de valeur $ .

Exemple de code

Regardons une utilisation commune:

 <?php
$keys = ['a', 'b', 'c'];
$value = 10;
$result = array_fill_keys($keys, $value);
print_r($result);
?>

La sortie sera:

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

Analyse des problèmes: le résultat renvoyé est incompatible avec les attentes

En supposant que vous utilisez un code similaire, mais le résultat renvoyé est différent de ce que vous attendez, il peut y avoir plusieurs raisons. Examinons les situations qui peuvent entraîner des incohérences.

1. Le tableau de valeur de clé contient des valeurs en double

Si le tableau de touches $ contient des éléments en double, Array_Fill_keys définira la valeur correspondante de la clé en fonction de la dernière touche en double. Par exemple:

 <?php
$keys = ['a', 'b', 'a'];
$value = 10;
$result = array_fill_keys($keys, $value);
print_r($result);
?>

La sortie sera:

 Array
(
    [a] => 10
    [b] => 10
)

Dans le code ci-dessus, «A» est défini à plusieurs reprises deux fois, mais Array_Fill_keys n'en conserve qu'une seule clé «A» et sa valeur est 10 . Cela n'augmente pas d'erreur, mais en raison de l'unicité des clés du tableau, les clés en double seront dédupliquées.

2. Le tableau de valeur de clé est vide

Si le tableau des touches $ que vous passez à Array_Fill_Keys est vide, le tableau renvoyé sera un tableau vide:

 <?php
$keys = [];
$value = 10;
$result = array_fill_keys($keys, $value);
print_r($result);
?>

Sortir:

 Array
(
)

Dans ce cas, la fonction ne pose aucun problème, mais le résultat n'a pas le contenu attendu.

3. Problème de type clé

array_fill_keys Lorsque Array_Fill_keys utilise des clés pour le tableau, le type de nom de clé affectera le résultat. Par exemple, si la clé est un type numérique, array_fill_keys le traite comme une clé entière. Considérez l'exemple suivant:

 <?php
$keys = [1, 2, 3];
$value = 'hello';
$result = array_fill_keys($keys, $value);
print_r($result);
?>

Sortir:

 Array
(
    [1] => hello
    [2] => hello
    [3] => hello
)

Si la clé est de type de chaîne, elle fera changer l'index du tableau.

Dépannage et solutions

  1. Vérifiez si le tableau des clés a des valeurs en double : assurez-vous que le tableau des touches $ n'a pas d'éléments en double. Vous pouvez utiliser Array_Unique () pour le dédupliquer, ou vérifier directement le tableau.

  2. Confirmez le type de clé de tableau : si vous voulez que la clé soit un type de chaîne, vous pouvez vous assurer que les éléments du tableau $ touches sont tous des types de chaînes ou des types de clés.

  3. Débogage et sortie : utilisez var_dump () au lieu de print_r () afin que vous puissiez voir le type de clé et les détails, ce qui aide à identifier les problèmes potentiels.

Résumer

Array_Fill_keys est une fonction très utile, mais vous devez faire attention au type de clé et à la structure du tableau pour éviter les résultats incohérents causés par des clés en double ou un décalage de type. Si vous constatez que la sortie ne répond pas aux attentes, vous pouvez résoudre le problème des aspects ci-dessus.

J'espère que cet article vous aide! Si vous avez plus de questions, veuillez visiter notre site Web.