php array_udiff_uassoc 用于带索引检查计算数组的差集,用回调函数比较数据和索引。本文章通过实例向大家介绍array_udiff_uassoc函数的使用方法。需要的码农可以参考一下。

定义和用法

array_udiff_uassoc() 函数用于比较两个(或更多个)数组的键名和键值,并返回差集。

注释:该函数使用两个用户自定义函数进行比较;第一个函数比较键名,第二个函数比较键值!

该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

说明

array_udiff_uassoc() 函数返回 array1 数组中存在但其它数组中都不存在的部分。返回的数组中键名保持不变。

注意与 array_diff() 以及 array_udiff() 不同的是键名也用于比较。同时进行键名和键值的比较,如 "a"=>1 和 "b"=>1 这两个元素是不相等的。

对键名(索引)的检查也是由回调函数 myfunction_key 进行的。这和 array_udiff_assoc() 的行为不同,后者是用内部函数比较索引的。

数组数据的比较是使用用户提供的回调函数 myfunction_value 进行的。在此方面和 array_diff_assoc() 的行为正好相反,后者是用内部函数进行比较的。

这两个函数都带有两个将进行比较的参数。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回 0,如果第一个参数大于第二个,则返回一个正数。

语法

array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
myfunction_key

必需。用于比较数组键名的用户自定义函数的名称。

字符串值,定义可调用的比较函数。如果第一个参数小于等于或大于第二个参数,则比较函数必须返回小于等于或大于 0 的整数。

myfunction_value

必需。用于比较数组键值的用户自定义函数的名称。

字符串值,定义可调用的比较函数。如果第一个参数小于等于或大于第二个参数,则比较函数必须返回小于等于或大于 0 的整数。

返回值:

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

实例:

<?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);
?>

在线运行

运行结果:

Array
(
[0.1] => cr Object
(
[priv_member:private] => 9
) [0.5] => cr Object
(
[priv_member:private] => 12
) [0] => cr Object
(
[priv_member:private] => 23
)
)

在上例中键值对 "1" => new cr(4) 同时出现在两个数组中,因此不在本函数的输出中。要记住必须提供两个回调函数。

php array_udiff_uassoc比较数组的键值与值的更多相关文章

  1. PHP 基础函数(一)数组的键名和值

    array_values($arr);  获取数组的值,键名消失,原数组不变,返回转变后的数组:

  2. PHP 按二维数组的键值排序

    /** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...

  3. PHP二维数组按照键值排序

    在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...

  4. 获取对象的key【键】和分别获取数组的key【键】和值

    一.先说对象,如何获取key[键]: var obj={ name:"websong", qq:289483936 } 想要获取这个obj对象的键“name”和"qq&q ...

  5. PHP:过滤数组中为空的值,并将返回的数组使用数值键,从 0 开始并以 1 递增

    首先了解下以下两个函数: 1.array_filter() 函数用回调函数过滤数组中的值. 2.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名.(被返回的数组将使 ...

  6. php 多维数组相同键值处理合并

    一.前言 在实际情况中,有时需要针对多维数组相同键值作相应的处理(四则运算.比较大小等)后才能够使用到实际情况中,现给出三维数组(多维数组可相应拓展)任意多个相同键值处理的函数,以备查阅. 二.代码 ...

  7. 通过PHP current()函数获取未知字符键名数组第一个元素的值

    在开发中经常遇到这样问题,获取数组第一个元素的值,如果是数字索引那还好,直接$array[0],如果键名是字符串,你又未知这个字符串呢?用current()函数就可以做到. 当然,你可以用array_ ...

  8. php方法----将数组按照键值进行排序

    将数组按照键值进行排序 array_multisort(array_column($arr,'first'),SORT_ASC,$arr);

  9. php数组 匹配键值

    1.array_search() //判断键值是否在数组中,//存在,返回值对应的键;//不存在,返回false;//例子:$type = array( "选考" => 'o ...

随机推荐

  1. 争夺 & KM思想

    题意: 给一张二分图,每个点与两个特定点又一条边相连,边权非负,让你给这个二分图每个点一个顶标,让每一条边两端顶标和大于等于这条边.求出最小顶标和. 这当然是翻译过的题目... 原题: 小Y和小P无聊 ...

  2. ORACLE11g JDBC Driver

    http://blog.163.com/z_rx/blog/static/276363762011312947507/ ORACLE服务器端安装程序找到相应目录"x$\app\Adminis ...

  3. Codeforces Round #215 (Div. 2) B. Sereja and Suffixes

    #include <iostream> #include <vector> #include <algorithm> #include <set> us ...

  4. 测试经验总结(“二次开发”)

    参考原文地址:http://www.51testing.com/html/86/n-3601786.html 不知不觉已经工作五年时间了,从茁壮.康拓普.利鑫云端到现在的惠卡世纪,经历过机顶盒软件(嵌 ...

  5. div模拟textarea

    有些Weber可能没有用过contenteditable这个属性,如果想编辑一个DIV里面的内容,这个属性是一个非常不错的选择   <div contenteditable="true ...

  6. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  7. 【BZOJ】3028: 食物

    http://www.lydsy.com/JudgeOnline/problem.php?id=3028 题意: 每种食物的限制如下:汉堡:偶数个:可乐:0个或1个鸡腿:0个,1个或2个蜜桃:奇数个鸡 ...

  8. C#操作文件夹及文件的方法的使用

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内容 ...

  9. jquery控制文字内容溢出用点点点(…)省略号表示

    jQuery限制字符字数的方法 $(function(){ //限制字符个数 $(“.text”).each(function(){ var maxwidth=23; if($(this).text( ...

  10. open Session In View和过滤器配置

    Open Session In View模式的主要思想是:当Web Request(浏览器请求)开始时,自动打开Session,当Web Request结束时,自动关闭Session.也就是说,Ses ...