Maison >développement back-end >tutoriel php >Comment puis-je comparer et filtrer efficacement des tableaux associatifs en fonction d'une colonne spécifique ?
Recherche des différences entre les colonnes d'un tableau associatif
Vous disposez de deux tableaux avec des lignes de données associatives et vous souhaitez filtrer le deuxième tableau en fonction de les valeurs d'une colonne spécifique dans le premier tableau. L'utilisation de array_diff() ne suffira pas pour cela car elle compare les lignes entières, pas seulement la colonne souhaitée.
Pour résoudre ce problème, vous pouvez utiliser la fonction array_udiff(), qui vous permet de définir une fonction de comparaison personnalisée. . Cette fonction doit comparer uniquement les valeurs de la colonne souhaitée, dans ce cas, la clé 'ITEM'.
Voici comment implémenter ceci :
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
Cela définit une fonction de comparaison personnalisée udiffCompare qui soustrait les valeurs 'ITEM' des deux lignes comparées. Le résultat de cette soustraction détermine si les lignes sont égales, différentes ou laquelle est la plus grande.
En passant udiffCompare comme troisième argument à array_udiff(), vous dites essentiellement à la fonction d'utiliser cette comparaison personnalisée. fonction pour déterminer quels éléments de $arr2 sont différents des éléments de $arr1 en fonction de la colonne 'ITEM'.
La sortie de ce code sera un tableau contenant uniquement les éléments de $arr2 qui ne sont pas présents dans $arr1, préservant la structure de tableau d'origine :
Array ( [3] => Array ( [ITEM] => 4 ) )
Cette démonstration vous permet de filtrer efficacement un tableau en fonction d'une valeur de colonne spécifique dans un autre tableau tout en conservant la structure de tableau d'origine.
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!