Dans PHP, la fonction Array_Combine () est utilisée pour combiner deux tableaux dans un tableau associatif. Son premier paramètre est le tableau des clés, et le deuxième paramètre est le tableau de valeur. La fonction utilisera chaque élément dans le tableau des clés comme clé du tableau associatif, et chaque élément du tableau de valeur comme valeur correspondante, et renvoie enfin un nouveau tableau.
Cependant, s'il y a des clés en double dans le tableau des clés, il y aura des problèmes lors de l'utilisation de Array_combine () . Jetons un coup d'œil à ce qui se passe et comment gérer cette situation.
La syntaxe de Array_Combine () est la suivante:
array_combine(array $keys, array $values): array|false
$ touches : un tableau contenant des noms de clés.
$ Valeurs : un tableau contenant les valeurs correspondantes de la clé.
Lorsque les éléments du tableau $ Keys correspondent aux éléments dans le tableau de valeurs $ un par un, array_combine () renvoie un nouveau tableau associatif.
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
print_r($result);
Résultat de sortie:
Array
(
[a] => 1
[b] => 2
[c] => 3
)
S'il y a des touches en double dans le tableau des clés, array_combine () rapportera une erreur, renvoyant false . En effet, en PHP, les clés du tableau doivent être uniques et ne peuvent pas avoir de valeurs de clés en double.
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
if ($result === false) {
echo "Une erreur s'est produite,Des clés en double existent dans le tableau。";
}
Résultat de sortie:
Une erreur s'est produite,Des clés en double existent dans le tableau。
Comme indiqué ci-dessus, Array_Combine () renvoie directement FALSE et ne crée pas de tableau associatif valide.
Pour éviter les erreurs causées par des clés en double, vous pouvez vérifier si le tableau des clés contient des touches en double avant d'utiliser array_combine () . S'il y a des clés en double, vous pouvez généralement prendre les méthodes suivantes pour les traiter:
La fonction Array_Unique () peut être utilisée pour supprimer les touches en double. Cela garantit que le tableau des clés passés dans array_combine () n'est pas dupliqué.
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$keys = array_unique($keys); // Supprimer les touches en double
$result = array_combine($keys, $values);
print_r($result);
Résultat de sortie:
Array
(
[a] => 1
[b] => 2
)
Une autre approche consiste à utiliser une stratégie personnalisée pour gérer les clés en double. Par exemple, utilisez array_count_values () pour compter le nombre de fois que chaque clé apparaît et traitez les clés répétées en fonction de règles spécifiques (par exemple, ajoutant un suffixe numérique).
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$keys_count = array_count_values($keys);
foreach ($keys_count as $key => $count) {
if ($count > 1) {
// Traitement des clés en double,Par exemple, ajoutez les numéros après la clé
$keys = array_map(function ($k) use ($key) {
static $counter = 1;
if ($k === $key) {
return $key . $counter++;
}
return $k;
}, $keys);
}
}
$result = array_combine($keys, $values);
print_r($result);
Résultat de sortie:
Array
(
[a] => 1
[b1] => 2
[b2] => 3
)
Lorsque vous utilisez Array_Combine () , s'il existe des clés en double dans le tableau des clés, PHP rapportera une erreur et renvoie false . Pour éviter cela, vous pouvez utiliser la fonction Array_Unique () pour supprimer les clés en double, ou personnaliser la stratégie de gestion des clés en double en fonction de vos besoins.
Grâce à ces méthodes, vous pouvez vous assurer d'éviter les erreurs lorsque vous utilisez Array_combine () et ajuster la gestion des clés en fonction des besoins réels.