PHP array_udiff 数组函数

  • 定义和用法

    array_udiff - 用回调函数比较数据来计算数组的差集
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
  • 语法

    array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )   
    
    使用回调函数比较数据,计算数组的不同之处。和 array_diff() 不同的是,前者使用内置函数进行数据比较。
  • 参数

    参数 必需的 描述
    array1 第一个数组。
    array2 第二个数组。
    ... 更多的数组列表。缺乏这一个参数,则这里识别为 value_compare_function 参数
    value_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。callback ( mixed $a, mixed $b ) : int
  • 返回值

    返回 array1 里没有出现在其他参数里的所有值。
  • 示例

    <?php
    // Arrays to compare
    $array1 = array(new stdclass, new stdclass,
            new stdclass, new stdclass,
    );
    
    $array2 = array(
            new stdclass, new stdclass,
    );
    
    // Set some properties for each object
    $array1[0]->width = 11; $array1[0]->height = 3;
    $array1[1]->width = 7;  $array1[1]->height = 1;
    $array1[2]->width = 2;  $array1[2]->height = 9;
    $array1[3]->width = 5;  $array1[3]->height = 7;
    
    $array2[0]->width = 7;  $array2[0]->height = 5;
    $array2[1]->width = 9;  $array2[1]->height = 2;
    
    function compare_by_area($a, $b) {
            $areaA = $a->width * $a->height;
            $areaB = $b->width * $b->height;
    
            if ($areaA < $areaB) {
                    return -1;
            } elseif ($areaA > $areaB) {
                    return 1;
            } else {
                    return 0;
            }
    }
    
    print_r(array_udiff($array1, $array2, 'compare_by_area'));
    ?>
    
    尝试一下
  • 相关函数

    array_diff() - 计算数组的差集
    array_diff_assoc() - 带索引检查计算数组的差集
    array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
    array_udiff_assoc() - 带索引检查计算数组的差集,用回调函数比较数据
    array_udiff_uassoc() - 带索引检查计算数组的差集,用回调函数比较数据和索引
    array_intersect() - 计算数组的交集
    array_intersect_assoc() - 带索引检查计算数组的交集
    array_uintersect() - 计算数组的交集,用回调函数比较数据
    array_uintersect_assoc() - 带索引检查计算数组的交集,用回调函数比较数据
    array_uintersect_uassoc() - 带索引检查计算数组的交集,用单独的回调函数比较数据和索引