Maison >développement back-end >tutoriel php >Comment trouver efficacement les différences dans les tableaux associatifs en fonction d'une clé spécifique ?

Comment trouver efficacement les différences dans les tableaux associatifs en fonction d'une clé spécifique ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 05:04:13201parcourir

How to Efficiently Find Differences in Associative Arrays Based on a Specific Key?

Comparaison des différences de valeurs associatives dans des tableaux bidimensionnels

Souvent, en programmation, nous devons comparer deux tableaux et extraire uniquement les différences. Cette tâche devient plus délicate lorsque les tableaux contiennent des données associatives, en particulier lorsque la comparaison doit se concentrer sur des valeurs clés spécifiques.

Considérons deux tableaux avec des lignes de données associatives :

$array1 = array(
    array('ITEM' => 1),
    array('ITEM' => 2),
    array('ITEM' => 3),
);

$array2 = array(
    array('ITEM' => 2),
    array('ITEM' => 3),
    array('ITEM' => 1),
    array('ITEM' => 4),
);

L'objectif est de filtrer le deuxième tableau pour exclure les éléments présents dans le premier tableau, mais en comparant spécifiquement les valeurs 'ITEM'.

Utiliser array_udiff avec Fonction de comparaison personnalisée

La fonction array_diff() est insuffisante à cet effet car elle compare des lignes entières. Pour nous concentrer exclusivement sur les valeurs 'ITEM', nous définissons une fonction de comparaison personnalisée pour array_udiff().

function udiffCompare($a, $b)
{
    return $a['ITEM'] - $b['ITEM'];
}

Cette fonction soustrait les valeurs 'ITEM' et renvoie la différence.

Maintenant , on peut utiliser cette fonction dans array_udiff() :

$arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');

La variable $arrdiff contiendra le souhaité résultat :

Array
(
    [3] => Array
        (
            [ITEM] => 4
        )
)

Cette approche préserve la structure du tableau existant et se concentre sur les valeurs clés spécifiques 'ITEM' à des fins de comparaison.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn