Dans PHP, la fonction Array_Combine () est utilisée pour combiner deux tableaux dans un tableau associatif, dont l'un fournit le nom de clé et l'autre fournit la valeur correspondante. Il semble que ce soit une fonction simple et directe, mais dans certains cas, l'utilisation de Array_Combine () peut entraîner des problèmes avec les noms de clés écrasés. Ce problème se produit généralement lorsque des doublons existent dans les tableaux de nom de clés.
Tout d'abord, jetons un coup d'œil à l'exemple d'utilisation de base de Array_Combine () :
<?php
$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
)
Comme on peut le voir à partir du code ci-dessus, Array_combine () fonctionne correctement. Il combine les clés $ du tableau de nom de clé et les valeurs de la table de valeur, renvoyant un nouveau tableau associatif.
Si le tableau de touches $ contient des noms de clés en double, Array_combine () écrasera la paire de valeurs clés précédente. Jetons un coup d'œil à un exemple:
<?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
print_r($result);
?>
Résultat de sortie:
Array
(
[a] => 1
[b] => 3
)
Dans cet exemple, le nom de clé «B» apparaît à plusieurs reprises, ce qui donne le résultat final que seul «b» => 3 est conservé, et le «b» d'origine est écrasé.
Pour éviter ce type de nom de clé remplacé, nous pouvons prendre les méthodes suivantes:
Avant d'utiliser array_combine () , nous pouvons utiliser array_count_values () pour vérifier s'il y a des doublons dans le tableau de nom de clé. S'il y a des doublons, vous pouvez d'abord traiter le nom de clé en double (par exemple, l'ajout d'un suffixe, etc.).
<?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
// Vérifiez s'il y a des doublons dans le tableau des noms de clé
$keys_count = array_count_values($keys);
foreach ($keys_count as $key => $count) {
if ($count > 1) {
// Ajouter un suffixe pour dupliquer les noms de clés
$keys = array_map(function($item) use ($key) {
return $item === $key ? $key . '_dup' : $item;
}, $keys);
}
}
$result = array_combine($keys, $values);
print_r($result);
?>
Résultat de sortie:
Array
(
[a] => 1
[b_dup] => 2
[b] => 3
)
De cette façon, nous évitons le problème de l'écrasement des noms de clés, et des noms de clés en double sont ajoutés avec le suffixe _dup .
Une autre façon consiste à utiliser array_merge () pour le traitement avant la fusion. Nous pouvons traiter les noms de clés en double lors de la fusion. Par exemple, l'écrasement peut être évité en ajoutant un nombre aléatoire ou un identifiant unique au nom de clé.
<?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$keys = array_map(function($key) {
return $key . uniqid('_'); // Ajouter un identifiant unique pour dupliquer les noms de clés
}, $keys);
$result = array_combine($keys, $values);
print_r($result);
?>
Résultat de sortie:
Array
(
[a] => 1
[b_6434e34d27e85] => 2
[b_6434e34d27e86] => 3
)
De cette façon, nous évitons le remplacement des noms de clés, et chaque nom de clé en double reçoit un identifiant unique.
Lorsque vous utilisez Array_Combine () , les noms de clés en double peuvent provoquer des problèmes d'écrasement. Pour éviter ce problème, nous pouvons:
Vérifiez s'il y a des doublons dans le tableau des noms de clé. S'il y a des doublons, vous pouvez modifier le nom de clé pour éviter l'écrasement.
Utilisez array_merge () pour fusionner les tableaux et traiter les noms de clés en double, tels que l'ajout d'un identifiant unique.
Grâce à ces méthodes, vous pouvez vous assurer que l'utilisation de la fonction Array_Combine () ne provoque pas le problème du nom de clé écrasé.