Dans le développement PHP, nous rencontrons souvent des situations où plusieurs tableaux doivent être fusionnés. Le tableau fusionné doit contenir tous les éléments du tableau d'origine et conserver la relation de chaque paire clé-valeur. Cet article explique comment réaliser une fusion de groupes majoritaires via PHP.
1. Fonction array_merge
La fonction array_merge intégrée de PHP peut fusionner deux ou plusieurs tableaux. Elle fusionnera les éléments de tous les tableaux dans un nouveau tableau. S'il y a les mêmes noms de clé, les valeurs ultérieures écraseront les éléments. valeur des précédentes.
L'exemple de code est le suivant :
$arr1 = array('a', 'b', 'c'); $arr2 = array('d', 'e', 'f'); $arr3 = array('g', 'h', 'i'); $newArr = array_merge($arr1, $arr2, $arr3); print_r($newArr);
Le résultat de sortie est :
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i )
2. Fonction personnalisée
Si le même nom de clé existe dans plusieurs tableaux à fusionner, la fonction array_merge écrasera la valeur précédente, ce qui n'est pas le cas. ne répondent pas aux exigences. Afin de résoudre ce problème, vous pouvez personnaliser une fonction pour réaliser une fusion de combinaisons majoritaires.
La logique de la fonction personnalisée est la suivante : parcourir toutes les paires clé-valeur du tableau, enregistrer la valeur du même nom de clé dans un nouveau tableau, si le même nom de clé existe, enregistrer la valeur dans un index en tant que clé tableau de nom, s'il n'existe pas, la valeur est enregistrée dans un nouvel élément du tableau.
L'exemple de code est le suivant :
function multiArrayMerge(...$arrays) { $result = array(); foreach ($arrays as $array) { foreach ($array as $key => $value) { if (is_int($key)) { $result[] = $value; } else { if (array_key_exists($key, $result) && is_array($value)) { $result[$key] = multiArrayMerge($result[$key], $value); } else { $result[$key] = $value; } } } } return $result; }
Exemple d'appel de plusieurs fonctions de fusion de tableaux :
$arr1 = array( 'a' => 1, 'b' => array( 'c' => 2, 'd' => array( 'e' => 3 ) ) ); $arr2 = array( 'a' => 4, 'b' => array( 'c' => 5, 'd' => array( 'f' => 6 ) ) ); $arr3 = array( 'g' => 7, 'h' => array( 'i' => 8 ) ); $result = multiArrayMerge($arr1, $arr2, $arr3); print_r($result);
Le résultat de sortie est :
Array ( [a] => 4 [b] => Array ( [c] => 5 [d] => Array ( [e] => 3 [f] => 6 ) ) [g] => 7 [h] => Array ( [i] => 8 ) )
3. Remarques
Lorsque vous utilisez des fonctions personnalisées pour obtenir une fusion majoritaire, vous devez faire attention à certains problèmes :
1. Si le même nom de clé existe, la fusion des valeurs de différents tableaux peut provoquer des conflits de données, qui doivent être traités selon une logique métier spécifique.
2. Afin d'éviter une récursion infinie de la fonction, la valeur dans le tableau doit être jugée. S'il s'agit d'un tableau, effectuez une opération récursive, sinon la valeur sera enregistrée directement dans le tableau résultat.
3. Les trois points (...) avant les paramètres indiquent une liste de paramètres de longueur variable, qui peut accepter n'importe quel nombre de paramètres. La liste de paramètres sera automatiquement convertie en un tableau à utiliser.
4. Résumé
PHP fournit la fonction array_merge pour fusionner des tableaux, mais lorsque la relation de paire clé-valeur doit être préservée, il y aura un problème d'écrasement des valeurs avec le même nom de clé. Cet article présente une méthode pour implémenter une fonction personnalisée, adaptée à la fusion de plusieurs tableaux et devant préserver les relations de paires clé-valeur. Lorsque vous l'utilisez, vous devez faire attention aux conflits de données avec les mêmes noms de clé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!