array_intersect、array_intersect_key、array_intersect_assoc、array_intersect_ukey、array_intersect_uassoc 的用法

<?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): "; var_dump(array_intersect($array1, $array2)); echo "array_intersect_key($array1, $array2): "; // 只比较键, 只返回键相同的对应数组项(值是第一个参数数组的值), 反正都是返回第一个参数数组里面的项 var_dump(array_intersect_key($array1, $array2)); echo "array_intersect_assoc($array1, $array2): "; // 同时比较键值, 可以看做是融合了 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): "; // array_intersect_ukey 使用自定义函数进行键比较 // !!! 使用该方法需要注意的是, 比较的数组不是关联数组的时候可能会导致错误(上面的例子中 'a' == 0 其实是 true) var_dump(array_intersect_ukey($array1, $array2, 'compare')); echo "array_intersect_uassoc($array1, $array2): "; // 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