array_intersect、array_intersect_key、array_intersect_assoc、array_intersect_ukey、array_intersect_uasso...

<?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"
}

  

转载于:https://www.cnblogs.com/eleven24/p/8808043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值