array_diffarray_diff_keyarray_diff_ukeyarray_diff_assocarray_diff_uassoc 的用法

Posted 白桂任的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了array_diffarray_diff_keyarray_diff_ukeyarray_diff_assocarray_diff_uassoc 的用法相关的知识,希望对你有一定的参考价值。

<?php

// array_diff* 系列的函数都返回关联数组

$array1 = [
    ‘a‘ => 1,
    ‘b‘ => 2,
    ‘e‘ => 3,
];
$array2 = [
    ‘a‘ => 1,
    ‘b‘ => 3,
    ‘c‘ => 5, // 这里的 0 是默认的, 写出来只是为了明显一点
];

// 只比较值
echo "array_diff(\$array1, \$array2): \n";
var_dump(array_diff($array1, $array2));

// 只比较键
echo "array_diff_key(\$array1, \$array2): \n";
var_dump(array_diff_key($array1, $array2));

// 1、在 $array1 中的值, 但不在 $array2 中的值的对应项会被返回
// 2、在 $array1 中的键, 但不在 $array2 中的键的对应项会被返回(即使两个数组中有相同的该键对应的值)
// 可以简单理解为, 该函数融合了 array_diff_key 和 array_diff 的功能:
// 1、先比较了两个数组的键, 在 $array1 中, 但不在 $array2 中的键会被返回(array_diff_key)
// 2、再比较两个数组的值(array_diff)
echo "array_diff_assoc(\$array1, \$array2): \n";
var_dump(array_diff_assoc($array1, $array2));

function compare($key1, $key2) {
    if ($key1 == $key2) {
        return 0;
    }
    return ($key1 > $key2) ? 1 : -1;
}

// array_diff 使用自定义回调函数进行 键和值 比较: array_diff_uassoc(同时比较键和值)
echo "array_diff_uasssoc(\$array1, \$array2): \n";
var_dump(array_diff_uassoc($array1, $array2, ‘compare‘));

// array_diff 使用自定义回调函数进行 键 比较: array_diff_ukey(只比较键)
echo "array_diff_ukey(\$array1, \$array2): \n";
var_dump(array_diff_ukey($array1, $array2, ‘compare‘));

  

输出:

array_diff($array1, $array2): 
array(1) {
  ["b"]=>
  int(2)
}
array_diff_key($array1, $array2): 
array(1) {
  ["e"]=>
  int(3)
}
array_diff_assoc($array1, $array2): 
array(2) {
  ["b"]=>
  int(2)
  ["e"]=>
  int(3)
}
array_diff_uasssoc($array1, $array2): 
array(2) {
  ["b"]=>
  int(2)
  ["e"]=>
  int(3)
}
array_diff_ukey($array1, $array2): 
array(1) {
  ["e"]=>
  int(3)
}

  

 

以上是关于array_diffarray_diff_keyarray_diff_ukeyarray_diff_assocarray_diff_uassoc 的用法的主要内容,如果未能解决你的问题,请参考以下文章