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中实现进程间通讯
Oct 09 PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
jQuery 源码分析笔记
May 25 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
php生成验证码函数
Oct 20 PHP
php中this关键字用法分析
Dec 07 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 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开发文档 会员收费1期
2012/08/14 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
jquery中动态效果小结
2010/12/16 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
Python3内置模块之base64编解码方法详解
2019/07/13 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python属于解释型语言么
2020/06/15 Python
树莓派升级python的具体步骤
2020/07/05 Python
python爬取招聘要求等信息实例
2020/11/20 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
简历上的自我评价
2014/02/03 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
机关党员公开承诺书
2014/08/30 职场文书
公司授权委托书
2014/10/17 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
sql注入报错之注入原理实例解析
2022/06/10 MySQL