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
fgetcvs在linux的问题
Jan 15 PHP
redis 队列操作的例子(php)
Apr 12 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
php批量删除操作代码分享
Feb 26 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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在不同页面间传递Json数据示例代码
2013/06/08 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
jQuery实现日历效果
2020/09/11 jQuery
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
一些网络技术方面的面试题
2014/05/01 面试题
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
触摸春天教学反思
2014/02/03 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
自我鉴定书
2014/03/24 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书