Exemple
Comparez les noms de clé et les valeurs de clé de deux tableaux (utilisez les fonctions intégrées pour comparer les noms de clé, utilisez l'utilisateurfonctions personnalisées pour comparer les valeurs de clé), et renvoie l'ensemble de différences :
<?php function myfunction($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"=>"blue","c"=>"green"); $result=array_udiff_assoc($a1,$a2,"myfunction"); print_r($result); ?>
Définition et utilisation
La fonction array_udiff() 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 des fonctions intégrées pour comparer les noms de clés et des fonctions définies par l'utilisateur pour comparer 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_assoc(array1,array2,array3...,myfunction)
参数 | 描述 |
array1 | 必需。与其他数组进行比较的第一个数组。 |
array2 | 必需。与第一个数组进行比较的数组。 |
array3,... | 可选。与第一个数组进行比较的其他数组。 |
myfunction | 必需。一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。 |
Détails techniques
返回值: | 返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。 |
PHP 版本: | 5+ |
array_udiff_assoc() renvoie un tableau qui contient tout dans array1 mais pas dans les autres paramètres les valeurs dans le tableau. Notez que contrairement à array_diff() et array_udiff(), les noms de clés sont également utilisés à des fins de comparaison. La comparaison des données du tableau est effectuée à l'aide de la fonction de rappel fournie par l'utilisateur . À cet égard, le comportement de array_diff_assoc() est exactement le contraire, qui utilise la fonction interne à des fins de comparaison.
Instance
<?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; } } $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_assoc($a, $b, array( "cr", "comp_func_cr" )); 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, vous pouvez voir que la paire clé-valeur "1" => (4) apparaît en même temps dans les deux tableaux et donc pas dans la sortie de cette fonction.
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!