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生成随机密码的三种方法小结
Sep 04 PHP
基于Zookeeper的使用详解
May 02 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
PHP微信H5支付开发实例
Jul 25 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 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 和 COM
2006/10/09 PHP
用header 发送cookie的php代码
2007/03/16 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
Yii清理缓存的方法
2016/01/06 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
初学python数组的处理代码
2011/01/04 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
浅谈django channels 路由误导
2020/05/28 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
医学院学生的自我评价分享
2013/11/19 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
民事调解书范文
2015/05/20 职场文书
施工安全责任协议书
2016/03/23 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript