和 array_intersect 类似,只不过 array_uintersect* 系列函数的值比较使用自定义函数;

键的比较,array_uintersect、array_uintersect_assoc 是使用内置方法, array_uintersect_uassoc 是使用自定义函数。

<?php

// array_uintersect 用自定义函数比较数组的交值(array_intersect 使用内置函数)
// 使用该函数我们通过进行更复杂的比较 class Rectangle
{
public $width; public $height; public function __construct($width, $height)
{
$this->width = $width;
$this->height = $height;
}
} $array1 = [
'a' => new Rectangle(1, 2),
'b' => new Rectangle(2, 3),
'c' => new Rectangle(3, 5),
]; $array2 = [
'a' => new Rectangle(2, 3),
'c' => new Rectangle(3, 5),
]; // 键比较函数
function compare_key($key1, $key2) {
if ($key1 == $key2) {
return 0;
} return $key1 > $key2 ? 1 : -1;
} // 值比较函数
function compare_area(Rectangle $value1, Rectangle $value2) {
$area1 = $value1->width * $value1->height;
$area2 = $value2->width * $value2->height; if ($area1 == $area2) {
return 0;
}
return $area1 > $area2 ? 1 : -1;
} // 返回数组交集, 只比较值 (值的比较使用自定义函数)
var_dump(array_uintersect($array1, $array2, 'compare_area')); // 返回数组交集, 同时比较键和值(值的比较使用自定义函数, 键的比较使用内置方法)
var_dump(array_uintersect_assoc($array1, $array2, 'compare_area')); // 返回数组交集, 同时比较键和值(值的比较使用自定义函数,键的比较使用自定义函数)
var_dump(array_uintersect_uassoc($array1, $array2, 'compare_area', 'compare_key'));

  

输出:

array(2) {
["b"]=>
object(Rectangle)#2 (2) {
["width"]=>
int(2)
["height"]=>
int(3)
}
["c"]=>
object(Rectangle)#3 (2) {
["width"]=>
int(3)
["height"]=>
int(5)
}
}
array(1) {
["c"]=>
object(Rectangle)#3 (2) {
["width"]=>
int(3)
["height"]=>
int(5)
}
}
array(1) {
["c"]=>
object(Rectangle)#3 (2) {
["width"]=>
int(3)
["height"]=>
int(5)
}
}

  

array_uintersect、array_uintersect_assoc、array_uintersect_uassoc 的使用方法的更多相关文章

  1. GeSHi Documentation

    GeSHi Documentation Version 1.0.8.11 Authors: © 2004 - 2007 Nigel McNie © 2007 - 2012 Benny Baumann ...

  2. Deformity PHP Webshell、Webshell Hidden Learning

    目录 . 引言 . webshell原理介绍 . webshell的常见类型以及变种方法 . webshell的检测原理以及检测工具 . webshell隐藏反检测对抗手段 0. 引言 本文旨在研究W ...

  3. 用trie树实现输入提示功能,输入php函数名,提示php函数

    参照刘汝佳的trie树 结构体 #include "stdio.h" #include "stdlib.h" #include "string.h&q ...

  4. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  5. PHP中的数组方法及访问方法总结

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  6. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  7. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  8. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  9. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

随机推荐

  1. Spring学习(2):面向接口编程思想

    一. 引言 Spring核心的IOC的实体用了面向接口编程思想,所以有必要了解下.简单来说的话,Spring就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 接口的定义的概念:泛指实 ...

  2. 【python 3.6】python读取json数据存入MySQL(二)

    在网上找到一个包含全国各省市经纬度的json文件,也可以通过上次的办法,解析json关键字,构造SQL语句,插入数据库. JSON文件格式如下: [ { "name": " ...

  3. Dev C++支持ISOC++11标准

    报错如下: [Error] #error This file requires compiler and library support for the ISO C++ 2011 standard. ...

  4. Machine Learning方法总结

    Kmeans——不断松弛(?我的理解)模拟,将点集分成几堆的算法(堆数需要自己定). 局部加权回归(LWR)——非参数学习算法,不用担心自变量幂次选择.(因此当二次欠拟合, 三次过拟合的时候不妨尝试这 ...

  5. Python常用模块之Pygame(手册篇:首页)

    Pygame手册官方网址:http://www.pygame.org/docs/ Pygame首页 说明文档: 自述 关于Pygame的基本信息,它是什么,谁参与了以及在哪里找到它. 安装 在几个平台 ...

  6. Python爬虫入门(7):正则表达式

    下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的一种公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串” ...

  7. python struct详解

    转载:https://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 有的时候需要用python处理二进制数据,比如,存取文件,socket操 ...

  8. Android连接SQLServer详细教程(数据库+服务器+客户端)

    摘星 标签: android连接sql http://blog.csdn.net/haoxingfeng/article/details/9111105

  9. 在html中怎么格式化输出json字符串

    #今天的项目用到,看俊哥找到,特此记录下来 步骤: 1.在html页面中输入下面的标签,必须是在pre标签内输出格式才会生效: <pre id="songReqJson"&g ...

  10. 《剑指offer》---左旋转字符串与右旋转字符串

    本文算法使用python3实现 1. 问题1 1.1 题目描述:   汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S, ...