<?php

// array_intersect 的用法是返回一个关联数组(键是第一个参数数组的键),
// 该数组包含了所有在 $array1 中同时也出现在其他参数数组中的值 // 下面的 0,1 键是手动加上去的, 可以去掉, 默认就是 0,1
$array1 = [
"a" => "green",
0 => "red",
1 => "blue",
2 => 'white'
];
$array2 = [
"b" => "green",
"yellow",
"red",
'white',
];
var_dump($array1, $array2);

// 只比较值
echo "array_intersect(\$array1, \$array2): \n";
var_dump(array_intersect($array1, $array2)); echo "array_intersect_key(\$array1, \$array2): \n";
// 只比较键, 只返回键相同的对应数组项(值是第一个参数数组的值), 反正都是返回第一个参数数组里面的项
var_dump(array_intersect_key($array1, $array2)); echo "array_intersect_assoc(\$array1, \$array2): \n";
// 同时比较键值, 可以看做是融合了 array_intersect、array_intersect_key 的功能
// 只有键值对同时相同的时候才会返回
var_dump(array_intersect_assoc($array1, $array2)); function compare($key1, $key2) {
if ($key1 == $key2) {
// 这里使用 === 的时候, array_intersect_ukey 返回的数组中没有 key 为 0 的项
return 0;
} return ($key1 > $key2) ? 1 : -1;
} echo "array_intersect_ukey(\$array1, \$array2): \n";
// array_intersect_ukey 使用自定义函数进行键比较
// !!! 使用该方法需要注意的是, 比较的数组不是关联数组的时候可能会导致错误(上面的例子中 'a' == 0 其实是 true)
var_dump(array_intersect_ukey($array1, $array2, 'compare')); echo "array_intersect_uassoc(\$array1, \$array2): \n";
// array_intersect_uassoc 使用自定义函数进行键比较
// 同时比较键值, 值的比较使用内置函数
var_dump(array_intersect_uassoc($array1, $array2, 'compare'));

  

输出:

array(4) {
["a"]=>
string(5) "green"
[0]=>
string(3) "red"
[1]=>
string(4) "blue"
[2]=>
string(5) "white"
}
array(4) {
["b"]=>
string(5) "green"
[0]=>
string(6) "yellow"
[1]=>
string(3) "red"
[2]=>
string(5) "white"
}
array_intersect($array1, $array2):
array(3) {
["a"]=>
string(5) "green"
[0]=>
string(3) "red"
[2]=>
string(5) "white"
}
array_intersect_key($array1, $array2):
array(3) {
[0]=>
string(3) "red"
[1]=>
string(4) "blue"
[2]=>
string(5) "white"
}
array_intersect_assoc($array1, $array2):
array(1) {
[2]=>
string(5) "white"
}
array_intersect_ukey($array1, $array2):
array(2) {
[1]=>
string(4) "blue"
[2]=>
string(5) "white"
}
array_intersect_uassoc($array1, $array2):
array(1) {
[2]=>
string(5) "white"
}

  

array_intersect、array_intersect_key、array_intersect_assoc、array_intersect_ukey、array_intersect_uassoc 的用法的更多相关文章

  1. php中的常用数组函数(三)(获取数组交集的函数们 array_intersect()、array_intersect_key()、array_intersect_assoc()、array_intersect_uassoc()、array_intersect_ukey())

    这5个获取交集的函数 有 5个对应的获取差集的函数.我是链接. array_intersect($arr1, $arr2); //获得数组同键值的交集 array_intersect_key($arr ...

  2. 005——数组(五)array_diff_ukey()array_diff_uassoc()array_intersect()array_intersect_assoc()array_intersect_key()array_intersect_ukey()array_intersect_uassoc()

    <?php function dump($arr) { print_r($arr); } /**array_diff_ukey() 通过回调函数的方式,返回一个数组在其他数组中不存在键名的值 * ...

  3. PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数详解

    求两个数组的交集问题可以使用 array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中 array_intersect()函数是 ...

  4. PHP之数组函数归类

    数组之所以强大,除了本身声明.存储方式灵活,它还有坚强后盾:一系列功能各异的数组处理函数.就像一只军队,除了领队将军本身能征善战,指挥英明之外,还有一群不怕死.忠实于他的士兵,这样才能显得整体的强大. ...

  5. php 数组函数学习

    1.array_change_key_case array_change_key_case(array,case)函数将数组的所有的键都转换为大写字母或小写字母.array表示目标数组,case表示转 ...

  6. Deformity PHP Webshell、Webshell Hidden Learning

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

  7. PHP取不定个数数组交集

    最近有个需求,有一个N个二维数组,N是动态的,不固定个数,现需取这N个数组的交集内容. 用到的函数是array_intersect_assoc 用法 $result_arr = array_inter ...

  8. php代码审计一些笔记

    之前学习了seay法师的代码审计与及80sec的高级审计,整理了一些笔记在印象里面,也发到这里作为记录 1,漏洞挖掘与防范(基础篇) sql注入漏洞            挖掘经验:注意点:登录页面, ...

  9. PHP array_diff 计算数组的差集

    array_diff (PHP 4 >= 4.0.1, PHP 5) array_diff — 计算数组的差集 说明 array array_diff ( array $array1 , arr ...

随机推荐

  1. Python 日志记录与程序流追踪(基础篇)

    日志记录(Logging) More than print: 每次用 terminal debug 时都要手动在各种可能出现 bug 的地方 print 相关信息来确认 bug 的位置: 每次完成 d ...

  2. LeetCode 845——数组中的最长山脉

    1. 题目 2. 解答 2.1 方法一 left 数组表示当前元素左边比当前元素小的元素个数,right 数组数组表示当前元素右边比当前元素小的元素个数.在山脉的中间 B[i] 处,其左边和右边肯定都 ...

  3. mysql系列学习

    # 帮助help create user;# 查看当前用户select user();# 创建用户create user 'egon'@'localhost' identified by '123'; ...

  4. linux下搭建python机器学习环境

    前言 在 linux 下搭建 python 机器学习环境还是比较容易的,考虑到包依赖的问题,最好建立一个虚拟环境作为机器学习工作环境,在建立的虚拟环境中,再安装各种需要的包,主要有以下6个(这是看这个 ...

  5. Buy the Ticket HDU 1133 卡特兰数应用+Java大数

    Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...

  6. MacOS下安装Requests库及使用

    大概框架 Request库的安装 爬取网页最好用的第三方库 直接安装即可(用于OS X) pip3 install requests request库的常用方法: request库一共有七个常用方法. ...

  7. 复利计算C语言转java的相关代码

    static void principal()// 计算本金 { int N, m; double i, F, P; System.out.printf("复利终值:"); F = ...

  8. CCF——折点计数201604-1

    问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点.其他的天都不是折点.如 ...

  9. Cmder命令行工具在Windows系统中的配置

    一.Cmder简介 Cmder:一款用于Windows系统中,可增强传统cmd命令行工具的控制台模拟器(类似于Linux系统中的终端控制窗口) 特点: 无需安装,解压即用 可使用较多Linux命令,如 ...

  10. C#开发移动应用 - 环境搭建

    前言 其实从2013开始就想用Xamarin,奈何 当初收费一座大山压在身上 完全无法见得庐山真面目 后面2015,微软收购Xamarin,没过多久就宣布对个人用户免费..那个兴奋劲就别提了.. 兴奋 ...