Maison  >  Article  >  développement back-end  >  Comment utiliser la fonction array_udiff pour effectuer une différence de tableau en PHP (vous pouvez personnaliser la fonction de comparaison)

Comment utiliser la fonction array_udiff pour effectuer une différence de tableau en PHP (vous pouvez personnaliser la fonction de comparaison)

WBOY
WBOYoriginal
2023-06-26 13:32:26813parcourir

En PHP, le tableau est un type de données très couramment utilisé, et il est également très important pour le fonctionnement et le traitement des tableaux. Lors du traitement de tableaux, il est souvent nécessaire d'effectuer des opérations telles que comparer et prendre des différences entre plusieurs tableaux.

PHP fournit de nombreuses fonctions pour les tableaux. La fonction array_udiff() est une fonction impliquant des différences de tableaux. Elle peut comparer plusieurs tableaux et renvoyer un tableau de différences. Cet article présentera en détail comment utiliser la fonction array_udiff() et comment personnaliser la fonction de comparaison pour effectuer une différence de tableau.

1. Utilisation de base de la fonction array_udiff()

La syntaxe de base de la fonction array_udiff() est la suivante :

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Parmi eux, $array1, $array2 et les paramètres $... suivants sont plusieurs tableaux à comparer, $ value_compare_func est une fonction de comparaison personnalisée.

La valeur de retour de cette fonction est un tableau, indiquant les valeurs du tableau $array1 qui sont différentes des autres tableaux.

Ce qui suit est un exemple simple qui montre comment utiliser la fonction array_udiff() :

<?php
function compare($a, $b){
    if($a === $b){ //值相等
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$array1 = array(1, 2, 3, 4, 5);
$array2 = array(5, 6, 7, 8, 9);

$result = array_udiff($array1, $array2, 'compare');
print_r($result);
?>

Le code ci-dessus produira un tableau $result contenant 1, 2, 3, 4. Ces valeurs existent dans $array1, mais dans N'existe pas dans $array2. Ce résultat est le même que celui que nous avions imaginé, car les tableaux $array1 et $array2 n'ont que la même valeur de 5, donc l'ensemble de différences doit être constitué de tous les éléments de $array1 sauf 5.

2. Implémentation d'une fonction de comparaison personnalisée

Lors de l'utilisation de la fonction array_udiff(), vous devez personnaliser une fonction de comparaison, qui est utilisée pour comparer si deux éléments sont identiques.

La définition de la fonction de comparaison doit remplir les conditions suivantes :

  1. La valeur de retour de la fonction doit être une valeur entière
  2. La valeur entière représente la relation de taille entre les deux éléments, plus précisément :

    • Si $ ; a est supérieur à $ b, alors la fonction doit renvoyer un entier positif (un nombre supérieur à 0), tel que 1 ;
    • Si $a est inférieur à $b, alors la fonction doit renvoyer un entier négatif (un nombre inférieur à $ b). que 0), comme -1 ;
    • Si $ a est égal à $b, alors la fonction doit renvoyer 0.

La fonction de comparaison peut être écrite en fonction de la situation réelle. Par exemple, vous pouvez utiliser la fonction suivante pour comparer la longueur de deux chaînes :

function compare_length($a, $b){
    $len_a = strlen($a);
    $len_b = strlen($b);
    if($len_a === $len_b){ //值相等
        return 0;
    }
    return ($len_a > $len_b) ? 1 : -1;
}

Dans la fonction compare_length() ci-dessus, nous utilisons strlen( ) fonction pour obtenir la longueur de $a et $b, compare ensuite les deux longueurs et renvoie la valeur correspondante.

Bien sûr, la fonction de comparaison n'est pas nécessairement uniquement liée à la valeur de l'élément. Elle peut également être comparée en fonction d'autres attributs, comme un certain attribut de l'objet contenu dans le tableau, etc. à la situation réelle.

Après avoir personnalisé la fonction de comparaison, nous pouvons utiliser la fonction array_udiff() pour effectuer une différence de tableau. Par exemple, nous avons les deux tableaux suivants :

$array1 = array('hello', 'world', 'foo', 'bar');
$array2 = array('world', 'bar', 'php');

Nous voulons trouver les éléments dans $array1 qui sont différents de $array2. Vous pouvez utiliser le code suivant :

function compare_in_array($a, $b){
    if(in_array($a, $b)){ //值在另一个数组中存在
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$result = array_udiff($array1, $array2, 'compare_in_array');
print_r($result);

Puisque dans la fonction de comparaison compare_in_array(), c'est. a jugé si $a existe dans le tableau $b, par conséquent, les éléments ayant la même valeur que $array2 seront exclus de la différence du tableau.

3. Conclusion

La fonction array_udiff() peut facilement comparer et différencier plusieurs tableaux. En personnalisant la fonction de comparaison, nous pouvons définir la méthode de comparaison des éléments en fonction de nos propres besoins et traiter les tableaux de manière plus flexible.

Il convient de noter que lors de la personnalisation d'une fonction de comparaison, elle doit répondre à l'exigence selon laquelle sa valeur de retour est un entier et la logique de comparaison réelle doit être écrite selon les besoins.

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