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+mysql 实现身份验证代码
Mar 24 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
php获取操作系统语言代码
Nov 04 PHP
php时区转换转换函数
Jan 07 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
PHP输入输出流学习笔记
May 12 PHP
php强制下载文件函数
Aug 24 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
javascript中的几个运算符
2007/06/29 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
心得体会范文
2014/01/04 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
一份文言文检讨书
2014/09/13 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年团工作总结
2014/11/27 职场文书
西岭雪山导游词
2015/02/06 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL