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.MVC的模板标签系统(一)
Sep 05 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
php实现微信发红包功能
Jul 13 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python根据url地址下载小文件的实例
2018/12/18 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
《黄河颂》教学反思
2014/02/07 职场文书
培训讲师岗位职责
2014/04/13 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python