php array_udiff_assoc 计算两个数组的差集实例


Posted in PHP onNovember 12, 2016

php array_udiff() 函数用于比较两个(或更多个)数组的键名和键值,并返回差集。此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。本文章通过实例向大家讲解array_udiff()函数的使用方法,

array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据

基本语法:

array array_udiff_assoc ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func )
此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。 

Note: 注意本函数只检查了多维数组中的一维。当然,可以用 array_udiff_assoc($array1[0], $array2[0], "some_comparison_func"); 来检查更深的维度。

参数介绍

参数 描述
array1 必需。第一个数组。
array2 必需。第二个数组。
myfunction 必需。字符串值,定义可调用的比较函数。 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。

返回值

array_udiff_assoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 与 array_udiff() 不同的是键名也用于比较。数组数据的比较是用用户提供的回调函数进行的。在此方面和 array_diff_assoc() 的行为正好相反,后者是用内部函数进行比较的。

实例

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

运行结果:

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 相关文章推荐
PHP和.net中des加解密的实现方法
Feb 27 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
PHP上传图片、删除图片简单实例
Nov 12 #PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 #PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 #PHP
thinkPHP多语言切换设置方法详解
Nov 11 #PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 #PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 #PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 #PHP
You might like
php数字游戏 计算24算法
2012/06/10 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
一些PHP的面试题
2015/05/06 面试题
广州某公司软件工程师面试题
2014/12/22 面试题
有关打架的检讨书
2014/01/25 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
入职担保书怎么写
2014/05/12 职场文书
趣味运动会策划方案
2014/06/02 职场文书
班级口号大全
2014/06/09 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle