<?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. JavaScript学习笔记(四)——DOM

    第五章 网页交互——文本对象模型[Document object model] 1 简单介绍DOM,dom是将html与javascript进行交互的工具. [使用innerHTML时注意:html中 ...

  2. /proc/sys目录下各文件参数说明

    linux 其他知识目录 原文链接:https://blog.csdn.net/hshl1214/article/details/4596583 一.前言本文档针对OOP8生产环境,具体优化策略需要根 ...

  3. 《JavaScript》页面跳转

    window.location.href: <i onclick="window.location.href = '/Form/Form_Write/Index?viewname=Fo ...

  4. mysql 数据库名含“-”

    跨数据库操作时,用反引号即可: insert into `tmi-ds`.knn_test(imagedata) select imagedata from tmidb.imagetable wher ...

  5. Right-BICEP单元测试

    一.测试方法:Right-BICEP Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? ...

  6. Alpha冲刺总结报告

    一.项目预期计划 允许粗糙的美工设计.由于是毫无经验的人生第一次,必定在开发过程中会遇到许多的问题,因而我们必定会花费不少时间在学习和debug上. 实现除了他山之石和规则系统以外的所有内容. 在日历 ...

  7. 团队项目-BUG挖掘

    测试硬件: 华为畅享5 测试平台: 安卓5.1 测试项目Git地址: https://github.com/RABITBABY/We-have-bing 测试Apk来源地址: http://www.a ...

  8. Hbase的安装和配置

    1,准备好hbase的linux环境下的压缩包,这里hadoop版本为hadoop2.5.0,hbase版本为 2,解压缩这个版本,不选src的,其实两个任一都行 进入到hbase安装包目录,我这里的 ...

  9. 对Excle的行和列进行检查 单元格类型转换代码 ;

    对Excle的行和列进行检查  转换代码 : ** * 导入信息 */ @Override public List<Object> add(HttpServletRequest reque ...

  10. Node.js系列——(3)连接DB

    背景 node.js,有人称之为运行在服务器端的JavaScript.以往我们使用JavaScript时,都是依赖后端查询数据库并返回数据,而JavaScript只需要展示即可.问题来了,就不能绕开后 ...