<?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. 高可用Kubernetes集群-11. 部署kube-dns

    参考文档: Github介绍:https://github.com/kubernetes/dns Github yaml文件:https://github.com/kubernetes/kuberne ...

  2. 所见即所得:七大无需编程的DIY开发工具

    现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入.此外,DIY工具的出现,也帮助广大不具备专业知识和技术的“移动开发粉”创建自 ...

  3. 大数据-spark-hbase-hive等学习视频资料

    不错的大数据spark学习资料,连接过期在评论区评论,再给你分享 https://pan.baidu.com/s/1ts6RNuFpsnc39tL3jetTkg

  4. C++ STL 全排列

    摘自爱国师哥博客https://www.cnblogs.com/aiguona/p/7304945.html 一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元 ...

  5. asp.netcore mvc 权限拦截

    1-背景介绍 需要做一个简单权限系统,基于 角色,用户,菜单 的模式 基于IActionFilter全局拦截,在内部跳转或者浏览器跳转的时候,拦截是成功的,当通过AJAX 请求的时候,页面就不会跳转 ...

  6. webService —— soap

    package soupTest; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpo ...

  7. Visual C++ 8.0对象布局

    哈哈,从M$ Visual C++ Team的Andy Rich那里又偷学到一招:VC8的隐含编译项/d1reportSingleClassLayout和/d1reportAllClassLayout ...

  8. AVAudioPlayer播放音乐

    1:首先创建一个新的项目,继承自UIViewController 2:导入框架AVFoundation.framework 右键工程名,在Build Phases的Link Binary With L ...

  9. css3 flex属性flex-grow、flex-shrink、flex-basis学习笔记

    最近在研究css3的flex.遇到的flex:1;这一块,很是很纠结,flex-grow.flex-shrink.flex-basis始终搞不清,最经搜集了大量的介绍,应该能算是明白了.网上大部分解释 ...

  10. Linux架设DDNS服务器之自动更新脚本

    问题描述:客户端是动态IP,每次连网之后要nsupdate下才可以把客户端的hostname 与IP映射更新到DNS Server上 命令如下: nsupdate -k K*****.key > ...