Maison  >  Article  >  développement back-end  >  PHP utilise deux fonctions de comparaison de noms de clés définies par l'utilisateur array_udiff_uassoc()

PHP utilise deux fonctions de comparaison de noms de clés définies par l'utilisateur array_udiff_uassoc()

黄舟
黄舟original
2017-11-09 09:32:241662parcourir

Exemple

Compare les noms de clé et les valeurs de clé de deux tableaux (en utilisant l'utilisateurfonction personnalisée pour la comparaison) et renvoie l'ensemble de différences :

<?php
function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");

$result=array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
?>

Définition et utilisation

La fonction array_udiff_uassoc() est utilisée pour comparer les noms de clé et les valeurs de clé de deux (ou plus) tableaux et renvoyer la différence.

Remarque : Cette fonction utilise deux fonctions définies par l'utilisateur à des fins de comparaison ; la première fonction compare les noms de clés et la seconde fonction compare les valeurs des clés !

Cette fonction compare les noms de clé et les valeurs de clé​​de deux (ou plus) tableaux et renvoie un tableau de différence, qui inclut tout ce qui se trouve dans le tableau comparé (tableau1), mais pas dans aucun autre. nom de clé et valeur de clé dans le tableau de paramètres (array2 ou array3, etc.).

Syntaxe

array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)
Paramètre Description
array1 Obligatoire . Le premier tableau à comparer avec d’autres tableaux.
array2 Obligatoire. Le tableau à comparer au premier tableau.
array3,... Facultatif. Tableau supplémentaire à comparer avec le premier tableau.
myfunction_key Obligatoire. Le nom de la fonction définie par l'utilisateur utilisée pour comparer les noms de clés de tableau.
Une string
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
myfunction_key 必需。用于比较数组键名的用户自定义函数的名称。
一个定义了可调用比较函数的字符串。如果第一个参数 f2c570bc5a616fb55b90df8c3566974f 第二个参数,相应地比较函数必须返回一个 f2c570bc5a616fb55b90df8c3566974f 0 的整数。
myfunction_value 必需。用于比较数组键值的用户自定义函数的名称。
一个定义了可调用比较函数的字符串。如果第一个参数 f2c570bc5a616fb55b90df8c3566974f 第二个参数,相应地比较函数必须返回一个 f2c570bc5a616fb55b90df8c3566974f 0 的整数。
qui définit une fonction de comparaison appelable. Si le premier argument est f2c570bc5a616fb55b90df8c3566974f et que le deuxième argument l'est, la fonction de comparaison correspondante doit renvoyer un entier f2c570bc5a616fb55b90df8c3566974f
myfunction_value Obligatoire. Nom de la fonction définie par l'utilisateur utilisée pour comparer les valeurs des clés du tableau.
Une chaîne qui définit une fonction de comparaison appelable. Si le premier argument est f2c570bc5a616fb55b90df8c3566974f et que le deuxième argument l'est, la fonction de comparaison correspondante doit renvoyer un entier f2c570bc5a616fb55b90df8c3566974f

Détails techniques

返回值: 返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。
PHP 版本: 5+

Exemple :

<?php

class cr {
    private $priv_member;
    function cr($val) {
        $this->priv_member = $val;
    }
    static function comp_func_cr($a, $b) {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member) ? 1 : -1;
    }
    static function comp_func_key($a, $b) {
        if ($a === $b) return 0;
        return ($a > $b) ? 1 : -1;
    }
}
$a = array(
    "0.1" => new cr(9) ,
    "0.5" => new cr(12) ,
    0 => new cr(23) ,
    1 => new cr(4) ,
    2 => new cr(-15) ,
);
$b = array(
    "0.2" => new cr(9) ,
    "0.5" => new cr(22) ,
    0 => new cr(3) ,
    1 => new cr(4) ,
    2 => new cr(-15) ,
);
$result = array_udiff_uassoc($a, $b, array(
    "cr",
    "comp_func_cr"
) , array(
    "cr",
    "comp_func_key"
));
print_r($result);
?>

Résultat d'exécution :

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

Dans l'exemple ci-dessus, la paire clé-valeur "1" => new cr(4) apparaît dans les deux tableaux en même temps, elle n'est donc pas incluse dans la sortie de cette fonction. N'oubliez pas que deux fonctions de rappel doivent être fournies.

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