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 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
YII框架模块化处理操作示例
Apr 26 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 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
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
jquery 页面全选框实践代码
2010/04/02 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
Python正确重载运算符的方法示例详解
2017/08/27 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
秸秆管理实施方案
2014/03/15 职场文书
亲属关系公证书
2014/04/08 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
市场部岗位职责
2015/02/12 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
医生个人年终总结
2015/02/28 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
人事任命通知
2015/04/20 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技